Skip to content

feat(ts): adds support for chain transactions#246

Merged
stalniy merged 1 commit intomainfrom
feat/chain-tx
Mar 9, 2026
Merged

feat(ts): adds support for chain transactions#246
stalniy merged 1 commit intomainfrom
feat/chain-tx

Conversation

@stalniy
Copy link
Copy Markdown
Contributor

@stalniy stalniy commented Mar 3, 2026

📝 Description

adds support for chain transactions. Example:

const cert = await certificateManager.generatePEM(account.address);
const trxResult = await transaction(sdk, [
  msg(sdk.akash.market.v1beta5.createLease, leaseMessage),
  msg(sdk.akash.cert.v1.createCertificate, {
    owner: account.address,
    cert: Buffer.from(cert.cert, "utf-8"),
    pubkey: Buffer.from(cert.publicKey, "utf-8"),
  }),
], {
  memo: "Test lease creation from bid - Akash Chain SDK",
});

🔧 Purpose of the Change

  • New feature implementation
  • Bug fix
  • Documentation update
  • Code refactoring
  • Dependency upgrade
  • Other: [specify]

📌 Related Issues

✅ Checklist

  • I've updated relevant documentation
  • Code follows Akash Network's style guide
  • I've added/updated relevant unit tests
  • Dependencies have been properly updated
  • I agree and adhered to the Contribution Guidelines

📎 Notes for Reviewers

[Include any additional context, architectural decisions, or specific areas to focus on]

@stalniy stalniy requested a review from a team as a code owner March 3, 2026 04:06
@github-actions github-actions bot added the C:ts label Mar 3, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 3, 2026

Walkthrough

Adds transaction batching helpers (msg, transaction) with tests; exposes a signer symbol on chain SDK instances; changes SDK method metadata to name-based paths and include a serviceLoader; updates codegen to emit name-based paths; transport uses fromPartial; docs and public re-exports/types updated. (50 words)

Changes

Cohort / File(s) Summary
Transaction Helpers & Tests
ts/src/sdk/chain/helpers.ts, ts/src/sdk/chain/helpers.spec.ts
Adds msg() and transaction() APIs, exports SIGNER_KEY symbol, encodes messages via metadata/service loader, batches and calls signAndBroadcast; includes unit tests for success and error paths.
SDK Signer Exposure
ts/src/sdk/chain/createChainNodeSDK.ts, ts/src/sdk/chain/createChainNodeWebSDK.ts
SDK return objects now include dynamic [SIGNER_KEY] property set from options.tx?.signer to provide signer access for transaction helpers.
Metadata & Codegen
ts/src/sdk/client/sdkMetadata.ts, ts/script/protoc-gen-sdk-object.ts
SDKMethodMetadata.path changed from [number, number] to [number, string]; metadata now includes serviceLoader; codegen emits name-based method paths and attaches serviceLoader.
Public API & Types
ts/src/sdk/index.shared.ts, ts/src/sdk/index.ts, ts/src/sdk/index.web.ts
Exports transaction, msg, TxMessage; adds ChainNodeSDK and ChainNodeWebSDK type aliases.
Transport Layer
ts/src/sdk/transport/tx/createTxTransport.ts
Unary tx transport now constructs message value via method.input.fromPartial(input as Record<string, unknown>) instead of using raw input.
Documentation
ts/README.md
Adds "Chain SDK transactions" subsection demonstrating batching multiple SDK calls into a single transaction.
Codegen Script
ts/script/protoc-gen-sdk-object.ts
Emits method path using service local name (JSON.stringify(method.localName)) and includes serviceLoader in emitted metadata.

Sequence Diagram

sequenceDiagram
    participant Client
    participant MsgHelper as msg()
    participant TxHelper as transaction()
    participant ServiceLoader
    participant ServiceDesc
    participant MethodResolver
    participant Signer

    Client->>MsgHelper: msg(methodA, dataA)
    MsgHelper-->>Client: TxMessageA
    Client->>MsgHelper: msg(methodB, dataB)
    MsgHelper-->>Client: TxMessageB

    Client->>TxHelper: transaction(sdk, [TxMessageA, TxMessageB], options)

    TxHelper->>ServiceLoader: getMetadata(methodA)
    ServiceLoader-->>TxHelper: metadata(path, serviceLoader)
    TxHelper->>ServiceLoader: loadAt(path[0])
    ServiceLoader-->>ServiceDesc: ServiceDesc
    TxHelper->>MethodResolver: serviceDesc.methods[path[1]]
    MethodResolver-->>TxHelper: method descriptor
    TxHelper->>TxHelper: encode message (typeUrl + fromPartial)

    TxHelper->>Signer: signAndBroadcast(encodedMessages, options)
    Signer-->>TxHelper: tx result
    TxHelper-->>Client: tx result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐇
I stitch up messages, one hop at a time,
two calls, one beat, a synchronized rhyme.
With a signer tucked under my paw so light,
batched and sent — ledger hums through the night.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive The PR addresses the core objectives from issue #206 with new msg() and transaction() helpers for batching, but does not implement explicit locking for concurrent request prevention as specified. Verify whether transaction batching adequately addresses the locking requirement, or if explicit account-level locking mechanism needs to be implemented separately.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and clearly summarizes the main feature being added: support for chain transactions in the TypeScript SDK.
Description check ✅ Passed The description includes all required template sections with appropriate content: a clear explanation with code example, purpose marked as new feature, linked issue #206, and all checklist items completed.
Out of Scope Changes check ✅ Passed All code changes are directly related to implementing transaction support: helpers for batching messages, SDK object augmentation with signer, and export additions. Documentation and test additions are appropriate.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/chain-tx

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
ts/src/sdk/chain/helpers.ts (1)

26-43: Consider renaming the callback parameter to avoid shadowing the exported msg function.

The callback parameter msg shadows the module-level msg export. While this doesn't cause a bug (the parameter is correctly scoped), it may confuse readers and makes the code harder to follow.

♻️ Suggested rename for clarity
-  const encodedObjects = await Promise.all(messages.map(async (msg) => {
-    const meta = getMetadata(msg.method);
+  const encodedObjects = await Promise.all(messages.map(async (txMsg) => {
+    const meta = getMetadata(txMsg.method);
     if (!meta) {
-      throw new Error(`No metadata found for method SDK method ${msg.method.name}`);
+      throw new Error(`No metadata found for method SDK method ${txMsg.method.name}`);
     }

     const serviceDesc = await meta.serviceLoader.loadAt(meta.path[0]);
     const method = serviceDesc.methods[meta.path[1]];

     if (!method) {
       throw new Error(`No method found at path [${meta.path[0]}, ${meta.path[1]}] in "${serviceDesc.typeName}"`);
     }

     return {
       typeUrl: `/${method.input.$type}`,
-      value: method.input.fromPartial(msg.data as Record<string, unknown>),
+      value: method.input.fromPartial(txMsg.data as Record<string, unknown>),
     };
   }));
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ts/src/sdk/chain/helpers.ts` around lines 26 - 43, The callback parameter
named "msg" in the messages.map call shadows the module-level exported msg
function; rename the callback parameter (for example to "message" or "m") in the
messages.map async callback and update all references inside that callback
(getMetadata(msg.method) -> getMetadata(message.method), msg.data ->
message.data, etc.) so encodedObjects, getMetadata, meta.serviceLoader.loadAt,
serviceDesc, method, and method.input.fromPartial continue to work without
shadowing the exported symbol.
ts/README.md (1)

119-135: Clarify undefined variables in the example.

The code example uses account and leaseMessage without defining them, which may confuse readers trying to follow along. Consider adding brief inline comments or definitions to make the example self-contained.

📝 Suggested improvement
 ```typescript
 import { transaction, msg, certificateManager } from "@akashnetwork/chain-sdk";
 
 // assuming `sdk` is created via createChainNodeSDK() or createChainNodeWebSDK as shown above
+// `account` is from wallet.getAccounts() (see examples above)
+// `leaseMessage` contains bid details like { bidId: {...}, deposit: {...} }
 
 const cert = await certificateManager.generatePEM(account.address);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ts/README.md` around lines 119 - 135, The example uses undefined identifiers
(account, leaseMessage) which makes it non-self-contained; update the README
example near the transaction/msg/certificateManager usage to either add brief
inline comments or small variable definitions showing that account comes from
wallet.getAccounts() (or similar) and that leaseMessage is the bid/lease payload
shape (e.g., containing bidId and deposit), and ensure the example refers to the
same sdk instance created earlier so readers can run transaction(sdk, [...])
without ambiguity.
ts/src/sdk/chain/helpers.spec.ts (1)

78-127: Good test coverage; consider adding an edge case for empty messages.

The tests comprehensively cover the happy path and error scenarios. Consider adding a test for calling transaction(sdk, []) with an empty messages array to document the expected behavior (whether it should throw or return early).

💡 Optional: Add test for empty messages array
it("handles empty messages array", async () => {
  const signer = createSigner();
  const sdk = { [SIGNER_KEY]: signer };

  // Document expected behavior: either throws or calls signAndBroadcast with empty array
  await transaction(sdk, []);

  expect(signer.signAndBroadcast).toHaveBeenCalledWith([], undefined);
});
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ts/src/sdk/chain/helpers.spec.ts` around lines 78 - 127, Add a unit test for
the edge case of an empty messages array in the transaction tests: in
helpers.spec.ts create a new it block that constructs a mock signer via
createSigner(), an sdk object with [SIGNER_KEY]: signer, then calls await
transaction(sdk, []) and asserts that signer.signAndBroadcast was called with an
empty array and undefined options
(expect(signer.signAndBroadcast).toHaveBeenCalledWith([], undefined)); place
this alongside the existing tests for transaction to document and lock in the
expected behavior for empty message lists.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@ts/README.md`:
- Around line 119-135: The example uses undefined identifiers (account,
leaseMessage) which makes it non-self-contained; update the README example near
the transaction/msg/certificateManager usage to either add brief inline comments
or small variable definitions showing that account comes from
wallet.getAccounts() (or similar) and that leaseMessage is the bid/lease payload
shape (e.g., containing bidId and deposit), and ensure the example refers to the
same sdk instance created earlier so readers can run transaction(sdk, [...])
without ambiguity.

In `@ts/src/sdk/chain/helpers.spec.ts`:
- Around line 78-127: Add a unit test for the edge case of an empty messages
array in the transaction tests: in helpers.spec.ts create a new it block that
constructs a mock signer via createSigner(), an sdk object with [SIGNER_KEY]:
signer, then calls await transaction(sdk, []) and asserts that
signer.signAndBroadcast was called with an empty array and undefined options
(expect(signer.signAndBroadcast).toHaveBeenCalledWith([], undefined)); place
this alongside the existing tests for transaction to document and lock in the
expected behavior for empty message lists.

In `@ts/src/sdk/chain/helpers.ts`:
- Around line 26-43: The callback parameter named "msg" in the messages.map call
shadows the module-level exported msg function; rename the callback parameter
(for example to "message" or "m") in the messages.map async callback and update
all references inside that callback (getMetadata(msg.method) ->
getMetadata(message.method), msg.data -> message.data, etc.) so encodedObjects,
getMetadata, meta.serviceLoader.loadAt, serviceDesc, method, and
method.input.fromPartial continue to work without shadowing the exported symbol.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 4f6a1d2 and 8d40532.

⛔ Files ignored due to path filters (4)
  • ts/src/generated/createCosmosSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createIbc-goSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createNodeSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createProviderSDK.ts is excluded by !**/generated/**
📒 Files selected for processing (11)
  • ts/README.md
  • ts/script/protoc-gen-sdk-object.ts
  • ts/src/sdk/chain/createChainNodeSDK.ts
  • ts/src/sdk/chain/createChainNodeWebSDK.ts
  • ts/src/sdk/chain/helpers.spec.ts
  • ts/src/sdk/chain/helpers.ts
  • ts/src/sdk/client/sdkMetadata.ts
  • ts/src/sdk/index.shared.ts
  • ts/src/sdk/index.ts
  • ts/src/sdk/index.web.ts
  • ts/src/sdk/transport/tx/createTxTransport.ts

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
ts/src/sdk/chain/helpers.spec.ts (1)

67-75: Add a regression test for undefined payload encoding in transaction(...).

You already validate msg(..., undefined) construction (Line [67]), but not the encode/sign path. A regression test here will lock in the expected behavior.

Proposed test addition
 describe(transaction.name, () => {
+  it("encodes undefined payload as an empty object", async () => {
+    const method = createMethod();
+    const signer = createSigner();
+    const sdk = { [SIGNER_KEY]: signer };
+
+    await transaction(sdk, [msg(method, undefined)]);
+
+    expect(signer.signAndBroadcast).toHaveBeenCalledWith(
+      [{ typeUrl: "/test.v1.MsgTest", value: {} }],
+      undefined,
+    );
+  });
+
   it("encodes messages and calls signAndBroadcast", async () => {

Also applies to: 78-127

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ts/src/sdk/chain/helpers.spec.ts` around lines 67 - 75, Add a regression test
that verifies the encode/sign path correctly handles an undefined payload by
calling transaction(...) (or whichever function wraps encoding/signing) with a
TxMessage constructed via createMethod() and msg(tx, undefined), then run the
encode and sign steps and assert the resulting encoded/signed output matches the
expected shape (i.e., payload absent or encoded as undefined) to prevent
regressions; target the existing helpers.spec tests around createMethod, msg and
transaction to exercise the full encode/sign flow rather than only the msg
constructor.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ts/README.md`:
- Around line 122-131: The snippet uses account.address and Node-only Buffer
which will break examples; define or reference the signer/account used (e.g.,
the example account produced earlier or the SDK signer address) so
generatePEM(account.address) and msg(..., { owner: account.address, ... }) are
unambiguous, and replace Buffer.from(...) with a cross-platform encoding (e.g.,
use TextEncoder to produce Uint8Array or ensure certificateManager.generatePEM
returns Uint8Array) so msg(sdk.akash.cert.v1.createCertificate, { cert:
<Uint8Array>, pubkey: <Uint8Array> }) works in both Node and browser
environments; update the README snippet to reference the defined account/signer
and use Uint8Array-compatible encoding instead of Buffer.

In `@ts/src/sdk/chain/helpers.ts`:
- Around line 42-45: The call to method.input.fromPartial in the encoder can
crash if msg.data is undefined; update the code that builds the protobuf message
(the object returning typeUrl/value) to pass a safe object by defaulting
msg.data to {} (e.g., use msg.data ?? {} or equivalent) before casting and
calling method.input.fromPartial so fromPartial always receives an object rather
than undefined.

---

Nitpick comments:
In `@ts/src/sdk/chain/helpers.spec.ts`:
- Around line 67-75: Add a regression test that verifies the encode/sign path
correctly handles an undefined payload by calling transaction(...) (or whichever
function wraps encoding/signing) with a TxMessage constructed via createMethod()
and msg(tx, undefined), then run the encode and sign steps and assert the
resulting encoded/signed output matches the expected shape (i.e., payload absent
or encoded as undefined) to prevent regressions; target the existing
helpers.spec tests around createMethod, msg and transaction to exercise the full
encode/sign flow rather than only the msg constructor.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 8d40532 and 4cda68f.

⛔ Files ignored due to path filters (5)
  • ts/src/generated/createCosmosSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createIbc-goSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createNodeSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createProviderSDK.ts is excluded by !**/generated/**
  • ts/test/functional/__snapshots__/protoc-gen-sdk-object.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (11)
  • ts/README.md
  • ts/script/protoc-gen-sdk-object.ts
  • ts/src/sdk/chain/createChainNodeSDK.ts
  • ts/src/sdk/chain/createChainNodeWebSDK.ts
  • ts/src/sdk/chain/helpers.spec.ts
  • ts/src/sdk/chain/helpers.ts
  • ts/src/sdk/client/sdkMetadata.ts
  • ts/src/sdk/index.shared.ts
  • ts/src/sdk/index.ts
  • ts/src/sdk/index.web.ts
  • ts/src/sdk/transport/tx/createTxTransport.ts
🚧 Files skipped from review as they are similar to previous changes (6)
  • ts/src/sdk/index.web.ts
  • ts/src/sdk/transport/tx/createTxTransport.ts
  • ts/src/sdk/index.shared.ts
  • ts/src/sdk/chain/createChainNodeWebSDK.ts
  • ts/src/sdk/chain/createChainNodeSDK.ts
  • ts/script/protoc-gen-sdk-object.ts

baktun14
baktun14 previously approved these changes Mar 3, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
ts/README.md (1)

124-124: ⚠️ Potential issue | 🟡 Minor

Fix the transaction example to be self-contained and cross-platform.

Line 124/128 references account.address without defining account, and Lines 129-130 use Buffer, which is Node-specific for a section that also targets web SDK usage.

Suggested doc patch
-const cert = await certificateManager.generatePEM(account.address);
+const owner = "akash1..."; // wallet address
+const utf8 = new TextEncoder();
+const cert = await certificateManager.generatePEM(owner);
 const txResult = await transaction(sdk, [
   msg(sdk.akash.market.v1beta5.createLease, leaseMessage),
   msg(sdk.akash.cert.v1.createCertificate, {
-    owner: account.address,
-    cert: Buffer.from(cert.cert, 'utf-8'),
-    pubkey: Buffer.from(cert.publicKey, 'utf-8'),
+    owner,
+    cert: utf8.encode(cert.cert),
+    pubkey: utf8.encode(cert.publicKey),
   })
 ], {
#!/bin/bash
# Verify the README snippet still contains undefined account usage and Node-only Buffer usage.
# Expected result after fix: no matches for account.address / Buffer.from in the "Chain SDK transactions" example.
rg -n -C2 '#### Chain SDK transactions|account\.address|Buffer\.from|TextEncoder|const owner' ts/README.md

Also applies to: 128-130

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ts/README.md` at line 124, The README's "Chain SDK transactions" example uses
undefined account.address and Node-only Buffer usage; update the snippet to be
self-contained by first creating or showing an Account/owner variable (e.g.,
const owner = await createAccount(...) or const owner = { address: '0x...' })
before calling certificateManager.generatePEM(owner.address), and replace
Buffer.from usages with cross-platform alternatives (use TextEncoder for browser
or show both options with a comment), ensuring the example uses the same
identifier (owner or account) consistently and includes a small,
platform-neutral note for creating the PEM bytes so the example runs in both
Node and web environments.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@ts/README.md`:
- Line 124: The README's "Chain SDK transactions" example uses undefined
account.address and Node-only Buffer usage; update the snippet to be
self-contained by first creating or showing an Account/owner variable (e.g.,
const owner = await createAccount(...) or const owner = { address: '0x...' })
before calling certificateManager.generatePEM(owner.address), and replace
Buffer.from usages with cross-platform alternatives (use TextEncoder for browser
or show both options with a comment), ensuring the example uses the same
identifier (owner or account) consistently and includes a small,
platform-neutral note for creating the PEM bytes so the example runs in both
Node and web environments.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 4cda68f and 28c32b5.

⛔ Files ignored due to path filters (5)
  • ts/src/generated/createCosmosSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createIbc-goSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createNodeSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createProviderSDK.ts is excluded by !**/generated/**
  • ts/test/functional/__snapshots__/protoc-gen-sdk-object.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (11)
  • ts/README.md
  • ts/script/protoc-gen-sdk-object.ts
  • ts/src/sdk/chain/createChainNodeSDK.ts
  • ts/src/sdk/chain/createChainNodeWebSDK.ts
  • ts/src/sdk/chain/helpers.spec.ts
  • ts/src/sdk/chain/helpers.ts
  • ts/src/sdk/client/sdkMetadata.ts
  • ts/src/sdk/index.shared.ts
  • ts/src/sdk/index.ts
  • ts/src/sdk/index.web.ts
  • ts/src/sdk/transport/tx/createTxTransport.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • ts/src/sdk/chain/helpers.spec.ts
  • ts/src/sdk/chain/helpers.ts

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ts/src/sdk/chain/helpers.ts`:
- Around line 4-9: The msg overloads weaken type safety by allowing omission of
data even when the SDK method requires an argument; update the msg signature so
data is required when Parameters<T>[0] is not undefined and optional only when
the method truly takes no input—use a conditional/overload on Parameters<T>[0]
(referencing msg, SDKMethod, Parameters, TxMessage and TxMessage.data) so calls
like msg(tx) only compile for methods with no params and callers must pass data
for methods that expect it.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 28c32b5 and 08ef060.

⛔ Files ignored due to path filters (5)
  • ts/src/generated/createCosmosSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createIbc-goSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createNodeSDK.ts is excluded by !**/generated/**
  • ts/src/generated/createProviderSDK.ts is excluded by !**/generated/**
  • ts/test/functional/__snapshots__/protoc-gen-sdk-object.spec.ts.snap is excluded by !**/*.snap
📒 Files selected for processing (11)
  • ts/README.md
  • ts/script/protoc-gen-sdk-object.ts
  • ts/src/sdk/chain/createChainNodeSDK.ts
  • ts/src/sdk/chain/createChainNodeWebSDK.ts
  • ts/src/sdk/chain/helpers.spec.ts
  • ts/src/sdk/chain/helpers.ts
  • ts/src/sdk/client/sdkMetadata.ts
  • ts/src/sdk/index.shared.ts
  • ts/src/sdk/index.ts
  • ts/src/sdk/index.web.ts
  • ts/src/sdk/transport/tx/createTxTransport.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • ts/src/sdk/chain/helpers.spec.ts
  • ts/src/sdk/chain/createChainNodeWebSDK.ts
  • ts/README.md
  • ts/src/sdk/chain/createChainNodeSDK.ts
  • ts/src/sdk/transport/tx/createTxTransport.ts

@stalniy stalniy merged commit 0d175db into main Mar 9, 2026
7 checks passed
@stalniy stalniy deleted the feat/chain-tx branch March 9, 2026 10:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ts: implement transaction support for chain sdk

3 participants