Skip to content

feat: token registry functions#74

Merged
nghaninn merged 11 commits into
v1from
feat/token-registry-functions
Jun 30, 2025
Merged

feat: token registry functions#74
nghaninn merged 11 commits into
v1from
feat/token-registry-functions

Conversation

@RishabhS7

@RishabhS7 RishabhS7 commented Jun 27, 2025

Copy link
Copy Markdown
Contributor

Summary

Added token registry function - transfer holder , beneficiary , owners and nominate

Issues

What are the related issues or stories?

Jira Ticket

Summary by CodeRabbit

  • New Features

    • Introduced functions to support token ownership and beneficiary transfers for Title Escrow contracts (versions 4 and 5), including transferring holder, beneficiary, both owners, and nominating a new owner.
    • These functions are now accessible through the main package exports.
  • Tests

    • Added comprehensive tests covering transfer functions across multiple Title Escrow and ethers.js versions to ensure compatibility and error handling.

RishabhS7 and others added 7 commits June 17, 2025 12:21
* fix: add w3c credential status check

* fix: update test

* fix: update enum status codes

* fix: remove console
## [1.5.4](v1.5.3...v1.5.4) (2025-06-17)

### Bug Fixes

* add w3c credential status check ([#72](#72)) ([0111cb3](0111cb3))
## [1.5.5](v1.5.4...v1.5.5) (2025-06-18)

### Bug Fixes

* upgrade package ([#73](#73)) ([3c6c9c7](3c6c9c7))
@coderabbitai

coderabbitai Bot commented Jun 27, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

The changes introduce new token transfer functionality for Title Escrow contracts (versions 4 and 5) in a token registry system, supporting both ethers.js v5 and v6. Four main transfer-related functions are implemented and exported, alongside comprehensive unit tests covering various scenarios and permutations.

Changes

File(s) Change Summary
src/token-registry-functions/transfer.ts New file implementing async functions: transferHolder, transferBeneficiary, transferOwners, nominate for Title Escrow v4/v5, with ethers v5/v6 support. Handles contract resolution, version detection, encryption, gas estimation, and error handling.
src/token-registry-functions/index.ts Re-exports all exports from ./transfer to expose transfer functions via this module.
src/index.ts Adds export for all public members of token-registry-functions, making transfer functions available at the package root.
src/tests/token-registry-functions/transfers.test.ts New comprehensive test suite for transfer functions, covering both Title Escrow versions and ethers.js versions, with extensive mocking and parameterized scenarios.

Sequence Diagram(s)

sequenceDiagram
    participant Caller
    participant TransferFunction
    participant Utils
    participant ContractFactory
    participant TitleEscrowContract
    participant GasStation

    Caller->>TransferFunction: Call transfer function (e.g., transferHolder)
    TransferFunction->>Utils: Resolve Title Escrow address (if needed)
    TransferFunction->>Utils: Detect Title Escrow version (if not provided)
    TransferFunction->>ContractFactory: Get contract instance (v4 or v5)
    TransferFunction->>Utils: Encrypt remarks (if provided)
    TransferFunction->>TitleEscrowContract: callStatic.<method> (dry run)
    alt Gas options missing
        TransferFunction->>GasStation: Query for gas fee recommendations
    end
    TransferFunction->>TitleEscrowContract: Execute contract method with params
    TitleEscrowContract-->>TransferFunction: Return transaction result
    TransferFunction-->>Caller: Return result or throw error
Loading

Poem

In the warren of code, new transfers arise,
With ethers both old and new in disguise.
Title Escrow versions, four and five,
Now tested and ready, robust and alive!
🐇 With a hop and a twirl,
Our tokens unfurl—
Safe journeys on-chain, as rabbits rejoice!

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

npm error Exit handler never called!
npm error This is an error with npm itself. Please report this error at:
npm error https://github.com/npm/cli/issues
npm error A complete log of this run can be found in: /.npm/_logs/2025-06-27T03_59_53_953Z-debug-0.log


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e76df5c and b8e2685.

📒 Files selected for processing (1)
  • src/token-registry-functions/transfer.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/token-registry-functions/transfer.ts
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 8

🧹 Nitpick comments (11)
src/__tests__/core/verify.test.ts (1)

11-11: Path traversal is overly verbose – simplify the relative import

The triple-parent reference plus explicit /src/ makes the path harder to read and maintain.
A minimal relative path from src/__tests__/core to src/verify is two levels up.

-import { W3CCredentialStatusCode } from './../../../src/verify/fragments/document-status/w3cCredentialStatus';
+import { W3CCredentialStatusCode } from '../../../verify/fragments/document-status/w3cCredentialStatus';
src/__tests__/token-registry-functions/transfers.test.ts (5)

164-176: Remove commented code blocks

These commented-out code blocks appear to be alternative implementations that are no longer needed. Clean up the code by removing them.

-    //   wallet = {
-    //     ...wallet,
-    //     address: '0xcurrent_holder',
-    //     getChainId: vi.fn().mockResolvedValue(CHAIN_ID.mainnet as unknown as number),
-    //   } as any;
     vi.spyOn(wallet, 'getChainId').mockResolvedValue(CHAIN_ID.mainnet as unknown as number);
   } else {
     wallet = new WalletV6(PRIVATE_KEY, Provider as any);
     vi.spyOn(Provider, 'getNetwork').mockResolvedValue({
       chainId: CHAIN_ID.mainnet,
     } as unknown as Network);
-    //   vi.spyOn(wallet, 'getAddress').mockResolvedValue('0xcurrent_holder');
   }

268-270: Fix useless rename in import destructuring

The destructuring unnecessarily renames SUPPORTED_CHAINS to itself.

-      const { SUPPORTED_CHAINS: SUPPORTED_CHAINS } = await import(
+      const { SUPPORTED_CHAINS } = await import(
         '@tradetrust-tt/tradetrust-utils'
       );

440-442: Fix useless rename in import destructuring

The destructuring unnecessarily renames SUPPORTED_CHAINS to itself.

-      const { SUPPORTED_CHAINS: SUPPORTED_CHAINS } = await import(
+      const { SUPPORTED_CHAINS } = await import(
         '@tradetrust-tt/tradetrust-utils'
       );

619-621: Fix useless rename in import destructuring

The destructuring unnecessarily renames SUPPORTED_CHAINS to itself.

-      const { SUPPORTED_CHAINS: SUPPORTED_CHAINS } = await import(
+      const { SUPPORTED_CHAINS } = await import(
         '@tradetrust-tt/tradetrust-utils'
       );

793-795: Fix useless rename in import destructuring

The destructuring unnecessarily renames SUPPORTED_CHAINS to itself.

-      const { SUPPORTED_CHAINS: SUPPORTED_CHAINS } = await import(
+      const { SUPPORTED_CHAINS } = await import(
         '@tradetrust-tt/tradetrust-utils'
       );
src/token-registry-functions/transfer.ts (5)

49-54: Remove commented-out code

This commented-out function should be removed if it's not needed. Keep the codebase clean.

-// const getSignerAddressSafe = async (signer: SignerV6 | Signer): Promise<string> => {
-//   if (isV6EthersProvider(signer.provider)) {
-//     return await (signer as SignerV6).getAddress();
-//   }
-//   return (signer as any).address;
-// };

151-151: Replace console.error with proper error logging

Using console.error in production code is not recommended. Consider using a proper logging solution or removing it entirely.

-    console.error('callStatic failed:', e);
+    // Error details are included in the thrown error below

263-263: Replace console.error with proper error logging

Using console.error in production code is not recommended.

-    console.error('callStatic failed:', e);
+    // Error details are included in the thrown error below

390-390: Replace console.error with proper error logging

Using console.error in production code is not recommended.

-    console.error('callStatic failed:', e);
+    // Error details are included in the thrown error below

505-505: Replace console.error with proper error logging

Using console.error in production code is not recommended.

-    console.error('callStatic failed:', e);
+    // Error details are included in the thrown error below
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c125eb2 and ce8e23e.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (7)
  • src/__tests__/core/verify.test.ts (1 hunks)
  • src/__tests__/token-registry-functions/transfers.test.ts (1 hunks)
  • src/core/endorsement-chain/useEndorsementChain.ts (1 hunks)
  • src/index.ts (1 hunks)
  • src/token-registry-functions/index.ts (1 hunks)
  • src/token-registry-functions/transfer.ts (1 hunks)
  • tsconfig.json (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/__tests__/token-registry-functions/transfers.test.ts (2)
src/token-registry-functions/transfer.ts (4)
  • transferHolder (539-539)
  • transferBeneficiary (539-539)
  • transferOwners (539-539)
  • nominate (539-539)
src/core/encrypt.ts (1)
  • encrypt (17-42)
🪛 Biome (1.9.4)
src/__tests__/token-registry-functions/transfers.test.ts

[error] 268-268: Useless rename.

Safe fix: Remove the renaming.

(lint/complexity/noUselessRename)


[error] 440-440: Useless rename.

Safe fix: Remove the renaming.

(lint/complexity/noUselessRename)


[error] 619-619: Useless rename.

Safe fix: Remove the renaming.

(lint/complexity/noUselessRename)


[error] 793-793: Useless rename.

Safe fix: Remove the renaming.

(lint/complexity/noUselessRename)

🔇 Additional comments (2)
src/token-registry-functions/index.ts (1)

1-1: Re-export looks good

Single-line barrel export correctly exposes the new transfer helpers.

src/index.ts (1)

23-23: Main index barrel updated – OK

Public surface now includes token-registry functions; no circular-dep issues spotted.

Comment thread tsconfig.json Outdated
Comment on lines 28 to 30
"downlevelIteration": true,
"types": ["vitest"]
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

⚠️ Potential issue

"types" now overrides Node globals – add @types/node (or re-add default resolution)

Specifying the "types" field narrows the included declaration bundles to the listed ones only.
By adding just "vitest" you implicitly drop the Node ambient types that the codebase (e.g. fs, process, Buffer) relies on, which will surface as compile-time errors on a clean install.

-    "types": ["vitest"]
+    "types": ["vitest", "node"]        // keep vitest typings *and* restore Node globals
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"downlevelIteration": true,
"types": ["vitest"]
},
"downlevelIteration": true,
"types": ["vitest", "node"] // keep vitest typings *and* restore Node globals
},
🤖 Prompt for AI Agents
In tsconfig.json around lines 28 to 30, the "types" field currently includes
only "vitest", which excludes the default Node.js ambient types needed for
modules like fs, process, and Buffer. To fix this, add "@types/node" to the
"types" array alongside "vitest" to ensure Node globals are included and prevent
compile-time errors.

Comment thread src/core/endorsement-chain/useEndorsementChain.ts Outdated
vi.spyOn(coreModule, 'getTitleEscrowAddress').mockImplementation(() =>
Promise.resolve(titleEscrowAddress),
);
mockTitleEscrowContract.callStatic.transferBeneficiary.mockResolvedValue(true);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix incorrect callStatic method name

The test is for transferOwners but mocks callStatic.transferBeneficiary instead of callStatic.transferOwners.

-      mockTitleEscrowContract.callStatic.transferBeneficiary.mockResolvedValue(true);
+      mockTitleEscrowContract.callStatic.transferOwners.mockResolvedValue(true);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
mockTitleEscrowContract.callStatic.transferBeneficiary.mockResolvedValue(true);
mockTitleEscrowContract.callStatic.transferOwners.mockResolvedValue(true);
🤖 Prompt for AI Agents
In src/__tests__/token-registry-functions/transfers.test.ts at line 558, the
mock incorrectly uses callStatic.transferBeneficiary for a test targeting
transferOwners. Change the mock method to
callStatic.transferOwners.mockResolvedValue(true) to correctly mock the intended
function.

Comment thread src/token-registry-functions/transfer.ts Outdated
Comment on lines +358 to +373
// check for current beneficiary, holder and signer
// const currentHolder = await titleEscrowContract.holder();
// const currentBeneficiary = await titleEscrowContract.beneficiary();
// if (currentBeneficiary.toLowerCase() === newBeneficiaryAddress.toLowerCase()) {
// throw new Error('Cannot transfer to current beneficiary');
// }
// if (currentHolder.toLowerCase() === newHolderAddress.toLowerCase()) {
// throw new Error('Cannot transfer to current holder');
// }
// const signerAddress = await signer.getAddress();
// if (
// currentHolder.toLowerCase() !== signerAddress.toLowerCase() ||
// currentBeneficiary.toLowerCase() !== signerAddress.toLowerCase()
// ) {
// throw new Error('Holder and Beneficiary must be current signer');
// }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Remove or implement commented validation logic

This validation logic is commented out. Either implement it properly or remove it entirely.

🤖 Prompt for AI Agents
In src/token-registry-functions/transfer.ts around lines 358 to 373, the
validation logic checking the current beneficiary, holder, and signer is
commented out. You need to either fully implement this validation by
uncommenting the code and ensuring it correctly checks that the new beneficiary
and holder are not the same as the current ones and that the signer matches both
current holder and beneficiary, or remove this commented code entirely if this
validation is no longer required.

Comment on lines +127 to +136
// check for current holder and signer
// const currentHolder = await titleEscrowContract.holder();

// if (currentHolder.toLowerCase() === holderAddress.toLowerCase()) {
// throw new Error('Cannot transfer to current holder');
// }
// const signerAddress = await getSignerAddressSafe(signer);
// if (currentHolder.toLowerCase() !== signerAddress.toLowerCase()) {
// throw new Error('Only the current holder can transfer');
// }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Remove or implement commented validation logic

This validation logic for checking current holder and signer authorization is commented out. Either implement it properly or remove it entirely.

Do you want me to help implement proper validation logic for holder verification, or should this code be removed?

🤖 Prompt for AI Agents
In src/token-registry-functions/transfer.ts around lines 127 to 136, the
commented-out validation logic for checking the current holder and signer
authorization should be either fully implemented or removed. To fix this,
uncomment the code and ensure that the current holder is fetched from the
contract, then compare it case-insensitively with the holderAddress and
signerAddress obtained safely. Throw errors if the transfer conditions are not
met, or if you decide this validation is unnecessary, remove the commented code
entirely to keep the codebase clean.

Comment on lines +239 to +248
// check for current beneficiary and signer
// const currentHolder = await titleEscrowContract.holder();
// const currentBeneficiary = await titleEscrowContract.beneficiary();
// if (currentBeneficiary.toLowerCase() === newBeneficiaryAddress.toLowerCase()) {
// throw new Error('Cannot transfer to current beneficiary');
// }
// const signerAddress = await signer.getAddress();
// if (currentHolder.toLowerCase() !== signerAddress.toLowerCase()) {
// throw new Error('Only the current holder can transfer');
// }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Remove or implement commented validation logic

This validation logic for checking current beneficiary and signer authorization is commented out. Either implement it properly or remove it entirely.

🤖 Prompt for AI Agents
In src/token-registry-functions/transfer.ts around lines 239 to 248, the
validation logic checking if the new beneficiary is the current beneficiary and
verifying the signer is the current holder is commented out. You should either
fully implement this validation by uncommenting the code and ensuring it works
correctly with proper error handling, or remove these commented lines entirely
if this validation is not needed.

Comment on lines +482 to +490
// check for current beneficiary and signer
// const currentBeneficiary = await titleEscrowContract.beneficiary();
// const signerAddress = await signer.getAddress();
// if (currentBeneficiary.toLowerCase() !== signerAddress.toLowerCase()) {
// throw new Error('Beneficiary must be current signer');
// }
// if (currentBeneficiary.toLowerCase() === newBeneficiaryAddress.toLowerCase()) {
// throw new Error('Cannot nominate to current beneficiary');
// }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Remove or implement commented validation logic

This validation logic is commented out. Either implement it properly or remove it entirely.

🤖 Prompt for AI Agents
In src/token-registry-functions/transfer.ts around lines 482 to 490, the
commented-out validation logic checking the current beneficiary and signer
should be either fully implemented or removed. To fix this, uncomment the code
and ensure it correctly fetches the current beneficiary and signer address,
compares them properly, and throws errors as intended, or delete these lines
entirely if this validation is no longer needed.

@RishabhS7
RishabhS7 changed the base branch from main to alpha June 27, 2025 05:55
@nghaninn
nghaninn changed the base branch from alpha to v1 June 30, 2025 04:02
@nghaninn
nghaninn merged commit 5690fcd into v1 Jun 30, 2025
28 checks passed
@nghaninn
nghaninn deleted the feat/token-registry-functions branch June 30, 2025 05:00
nghaninn pushed a commit that referenced this pull request Jun 30, 2025
## [1.6.0-alpha.1](v1.5.3...v1.6.0-alpha.1) (2025-06-30)

### Features

* token registry functions ([#74](#74)) ([5690fcd](5690fcd))

### Miscellaneous Chores

* back merge ([#75](#75)) ([7cc1891](7cc1891)), closes [#72](#72) [#72](#72) [#73](#73) [#73](#73)
@nghaninn

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.6.0-alpha.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

This was referenced Jul 3, 2025
RishabhS7 added a commit that referenced this pull request Aug 14, 2025
RishabhS7 pushed a commit that referenced this pull request Aug 14, 2025
## [1.6.0-alpha.1](v1.5.3...v1.6.0-alpha.1) (2025-06-30)

### Features

* token registry functions ([#74](#74)) ([5690fcd](5690fcd))

### Miscellaneous Chores

* back merge ([#75](#75)) ([7cc1891](7cc1891)), closes [#72](#72) [#72](#72) [#73](#73) [#73](#73)
rongquan1 added a commit that referenced this pull request Aug 15, 2025
* fix: add w3c credential status check (#72)

* fix: add w3c credential status check

* fix: update test

* fix: update enum status codes

* fix: remove console

* chore(release): 1.5.4 [skip ci]

## [1.5.4](v1.5.3...v1.5.4) (2025-06-17)

### Bug Fixes

* add w3c credential status check ([#72](#72)) ([0111cb3](0111cb3))

* fix: upgrade package (#73)

* chore(release): 1.5.5 [skip ci]

## [1.5.5](v1.5.4...v1.5.5) (2025-06-18)

### Bug Fixes

* upgrade package ([#73](#73)) ([3c6c9c7](3c6c9c7))

* feat: support passing titleEscrowAddress to fetchEndorsementChain (#80)

Co-authored-by: moiz-sgtradex <moiz.shaikh@sgtradextech.com>

* chore(release): 1.6.0 [skip ci]

## [1.6.0](v1.5.5...v1.6.0) (2025-07-14)

### Features

* support passing titleEscrowAddress to fetchEndorsementChain ([#80](#80)) ([aa7b4f0](aa7b4f0))

* feat: add astron v5 (#81)

Co-authored-by: maxufeng <maxufeng@caict.ac.cn>

* chore(release): 1.7.0 [skip ci]

## [1.7.0](v1.6.0...v1.7.0) (2025-07-15)

### Features

* add astron v5 ([#81](#81)) ([0bebeae](0bebeae))

* fix: update tradetrust-tt/tradetrust package (#87)

* fix: update tradetrust-tt/tradetrust package

* fix: update version

* fix: update imports

* chore(release): 1.7.1 [skip ci]

## [1.7.1](v1.7.0...v1.7.1) (2025-07-25)

### Bug Fixes

* update tradetrust-tt/tradetrust package ([#87](#87)) ([e4f75a4](e4f75a4))

* fix: upgrade packages (#88)

* chore(release): 1.7.2 [skip ci]

## [1.7.2](v1.7.1...v1.7.2) (2025-07-28)

### Bug Fixes

* upgrade packages ([#88](#88)) ([0cc314e](0cc314e))

* fix: error message types (#89)

* chore(release): 1.7.3 [skip ci]

## [1.7.3](v1.7.2...v1.7.3) (2025-07-28)

### Bug Fixes

* error message types ([#89](#89)) ([d83bada](d83bada))

* fix: upgrade packages (#90)

* chore(release): 1.7.4 [skip ci]

## [1.7.4](v1.7.3...v1.7.4) (2025-07-29)

### Bug Fixes

* upgrade packages ([#90](#90)) ([758651d](758651d))

* feat: token registry functions (#96)

* chore(release): 1.8.0 [skip ci]

## [1.8.0](v1.7.4...v1.8.0) (2025-07-30)

### Features

* token registry functions ([#96](#96)) ([6c379e9](6c379e9))

* fix: accept return function (#97)

* chore(release): 1.8.1 [skip ci]

## [1.8.1](v1.8.0...v1.8.1) (2025-08-07)

### Bug Fixes

* accept return function ([#97](#97)) ([6398017](6398017))

* fix: update edsa w3c verifier

* fix: update vefiable doc v2.0

* feat: token registry functions (#74)

* chore(release): 1.6.0-alpha.1 [skip ci]

## [1.6.0-alpha.1](v1.5.3...v1.6.0-alpha.1) (2025-06-30)

### Features

* token registry functions ([#74](#74)) ([5690fcd](5690fcd))

### Miscellaneous Chores

* back merge ([#75](#75)) ([7cc1891](7cc1891)), closes [#72](#72) [#72](#72) [#73](#73) [#73](#73)

* feat: mint function (#78)

* fix: add w3c credential status check (#72)

* fix: add w3c credential status check

* fix: update test

* fix: update enum status codes

* fix: remove console

* chore(release): 1.5.4 [skip ci]

## [1.5.4](v1.5.3...v1.5.4) (2025-06-17)

### Bug Fixes

* add w3c credential status check ([#72](#72)) ([0111cb3](0111cb3))

* fix: upgrade package (#73)

* chore(release): 1.5.5 [skip ci]

## [1.5.5](v1.5.4...v1.5.5) (2025-06-18)

### Bug Fixes

* upgrade package ([#73](#73)) ([3c6c9c7](3c6c9c7))

* feat: add transfer holder function

* feat: add transfer owners beneficiary

* chore: tests cleanup

* chore: tests cleanup

* fix: remove console

* fix: rever useendorement chain

* fix: remove console

* feat: add reject transfer functions

* chore: trigger rebuild after rebase

* chore(release): 1.5.4 [skip ci]

* add w3c credential status check ([#72](#72)) ([0111cb3](0111cb3))

* feat: add transfer holder function

* feat: add transfer owners beneficiary

* chore: tests cleanup

* fix: remove console

* fix: rever useendorement chain

* feat: add reject transfer functions

* chore: trigger rebuild after rebase

* chore: trigger rebuild after rebase

* feat: token registry return functions

* feat: add mint function

* fix: update fixes

* fix: update tests

* revert: revert changes

---------

Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Ng Han Inn <43451336+nghaninn@users.noreply.github.com>

* feat: owner of function (#79)

* feat: add ownerOf function

* feat: add test cases

* fix: update test cases for ownerof function

* fix: update imports

* fix: update imports

* chore(release): 1.6.0-alpha.2 [skip ci]

## [1.6.0-alpha.2](v1.6.0-alpha.1...v1.6.0-alpha.2) (2025-07-15)

### Features

* mint function ([#78](#78)) ([2ea52ce](2ea52ce)), closes [#72](#72) [#72](#72) [#73](#73) [#73](#73) [#72](#72)
* owner of function ([#79](#79)) ([81d0e36](81d0e36))

* chore: e2e transfers tests (#82)

* feat: add ownerOf function

* feat: add test cases

* fix: update test cases for ownerof function

* chore: add e2e test for transfer functions

* chore: add e2e test for transfer functions

* feat: add ownerOf function

* feat: add test cases

* fix: update test cases for ownerof function

* chore: add e2e test for transfer functions

* chore: add e2e test for transfer functions

* fix: update mock tests

* fix: update mock test fixtures

* fix: update mock tests for mint and return

* fix: update test script

* fix: update imports

* fix: update gitignore

* fix: delete cache

* fix: update imports

* chore: e2e tests reject transfer (#83)

* chore: e2e tests for reject functions

* fix: reject function ethers v6 compatible

* fix: update imports

* fix: mock test cases

* fix: import fixed

* fix: e2e return token tests (#84)

* chore: e2e tests for reject functions

* fix: reject function ethers v6 compatible

* fix: update imports

* fix: mock test cases

* fix: static call fixes

* chore: add e2e test cases

* fix: update imports

* fix: update imports

* fix: tests

* fix: mock functions

* fix: change name

* fix: update imports

* fix: update src imports

* chore(release): 1.6.0-alpha.3 [skip ci]

## [1.6.0-alpha.3](v1.6.0-alpha.2...v1.6.0-alpha.3) (2025-07-18)

### Bug Fixes

* e2e return token tests ([#84](#84)) ([703be01](703be01))

### Miscellaneous Chores

* e2e tests reject transfer ([#83](#83)) ([58a8da2](58a8da2))
* e2e transfers tests ([#82](#82)) ([145e763](145e763))

* chore: merge main into v1  (#85)

* fix: add w3c credential status check (#72)

* fix: add w3c credential status check

* fix: update test

* fix: update enum status codes

* fix: remove console

* chore(release): 1.5.4 [skip ci]

## [1.5.4](v1.5.3...v1.5.4) (2025-06-17)

### Bug Fixes

* add w3c credential status check ([#72](#72)) ([0111cb3](0111cb3))

* fix: upgrade package (#73)

* chore(release): 1.5.5 [skip ci]

## [1.5.5](v1.5.4...v1.5.5) (2025-06-18)

### Bug Fixes

* upgrade package ([#73](#73)) ([3c6c9c7](3c6c9c7))

* feat: support passing titleEscrowAddress to fetchEndorsementChain (#80)

Co-authored-by: moiz-sgtradex <moiz.shaikh@sgtradextech.com>

* chore(release): 1.6.0 [skip ci]

## [1.6.0](v1.5.5...v1.6.0) (2025-07-14)

### Features

* support passing titleEscrowAddress to fetchEndorsementChain ([#80](#80)) ([aa7b4f0](aa7b4f0))

* feat: add astron v5 (#81)

Co-authored-by: maxufeng <maxufeng@caict.ac.cn>

* chore(release): 1.7.0 [skip ci]

## [1.7.0](v1.6.0...v1.7.0) (2025-07-15)

### Features

* add astron v5 ([#81](#81)) ([0bebeae](0bebeae))

---------

Co-authored-by: RishabhS7 <59636880+RishabhS7@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Ng Han Inn <43451336+nghaninn@users.noreply.github.com>
Co-authored-by: moiz-sgtradex <moiz.shaikh@sgtradextech.com>
Co-authored-by: caict-develop-zhangbo <68949988+caict-develop-zhangbo@users.noreply.github.com>
Co-authored-by: maxufeng <maxufeng@caict.ac.cn>

* fix: trigger release (#86)

Co-authored-by: moiz-sgtradex <moiz.shaikh@sgtradextech.com>

* chore(release): 1.6.0-alpha.4 [skip ci]

## [1.6.0-alpha.4](v1.6.0-alpha.3...v1.6.0-alpha.4) (2025-07-23)

### Bug Fixes

* trigger release ([#86](#86)) ([d2fb6fb](d2fb6fb))

### Miscellaneous Chores

* merge main into v1  ([#85](#85)) ([b81b422](b81b422)), closes [#72](#72) [#72](#72) [#73](#73) [#73](#73) [#80](#80) [#80](#80) [#81](#81) [#81](#81)

* chore: rebase v1 with main (#95)

* fix: add w3c credential status check (#72)

* fix: add w3c credential status check

* fix: update test

* fix: update enum status codes

* fix: remove console

* chore(release): 1.5.4 [skip ci]

* add w3c credential status check ([#72](#72)) ([0111cb3](0111cb3))

* fix: upgrade package (#73)

* chore(release): 1.5.5 [skip ci]

* upgrade package ([#73](#73)) ([3c6c9c7](3c6c9c7))

* feat: support passing titleEscrowAddress to fetchEndorsementChain (#80)

Co-authored-by: moiz-sgtradex <moiz.shaikh@sgtradextech.com>

* chore(release): 1.6.0 [skip ci]

* support passing titleEscrowAddress to fetchEndorsementChain ([#80](#80)) ([aa7b4f0](aa7b4f0))

* feat: add astron v5 (#81)

Co-authored-by: maxufeng <maxufeng@caict.ac.cn>

* chore(release): 1.7.0 [skip ci]

* add astron v5 ([#81](#81)) ([0bebeae](0bebeae))

* fix: update tradetrust-tt/tradetrust package (#87)

* fix: update tradetrust-tt/tradetrust package

* fix: update version

* fix: update imports

* chore(release): 1.7.1 [skip ci]

* update tradetrust-tt/tradetrust package ([#87](#87)) ([e4f75a4](e4f75a4))

* fix: upgrade packages (#88)

* chore(release): 1.7.2 [skip ci]

* upgrade packages ([#88](#88)) ([0cc314e](0cc314e))

* fix: error message types (#89)

* chore(release): 1.7.3 [skip ci]

* error message types ([#89](#89)) ([d83bada](d83bada))

* fix: upgrade packages (#90)

* chore(release): 1.7.4 [skip ci]

* upgrade packages ([#90](#90)) ([758651d](758651d))

---------

Co-authored-by: RishabhS7 <59636880+RishabhS7@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Ng Han Inn <43451336+nghaninn@users.noreply.github.com>
Co-authored-by: moiz-sgtradex <moiz.shaikh@sgtradextech.com>
Co-authored-by: caict-develop-zhangbo <68949988+caict-develop-zhangbo@users.noreply.github.com>
Co-authored-by: maxufeng <maxufeng@caict.ac.cn>

* fix: add w3c credential status check (#72)

* fix: add w3c credential status check

* fix: update test

* fix: update enum status codes

* fix: remove console

* chore(release): 1.5.4 [skip ci]

* add w3c credential status check ([#72](#72)) ([0111cb3](0111cb3))

* fix: upgrade package (#73)

* chore(release): 1.5.5 [skip ci]

* upgrade package ([#73](#73)) ([3c6c9c7](3c6c9c7))

* fix: update edsa w3c verifier

* fix: resolve conflicts

* fix: rebase

* fix: resolve conflicts

* fix: update package lock

* fix: resolve conflicts

* fix: verify test

* fix: cryptosuit types

---------

Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Ng Han Inn <43451336+nghaninn@users.noreply.github.com>
Co-authored-by: Moiz Shaikh <58319530+Moiz47@users.noreply.github.com>
Co-authored-by: moiz-sgtradex <moiz.shaikh@sgtradextech.com>
Co-authored-by: caict-develop-zhangbo <68949988+caict-develop-zhangbo@users.noreply.github.com>
Co-authored-by: maxufeng <maxufeng@caict.ac.cn>
Co-authored-by: rongquan1 <rongquan.low@gmail.com>
nghaninn pushed a commit that referenced this pull request Aug 19, 2025
## [1.6.0-alpha.5](v1.6.0-alpha.4...v1.6.0-alpha.5) (2025-08-19)

### Bug Fixes

* add w3c version detection function ([#103](#103)) ([3270cc6](3270cc6))

### Miscellaneous Chores

* ecdsa w3c verify ([#100](#100)) ([484e1ff](484e1ff)), closes [#72](#72) [#72](#72) [#73](#73) [#73](#73) [#80](#80) [#80](#80) [#81](#81) [#81](#81) [#87](#87) [#87](#87) [#88](#88) [#88](#88) [#89](#89) [#89](#89) [#90](#90) [#90](#90) [#96](#96) [#96](#96) [#97](#97) [#97](#97) [#74](#74) [#74](#74) [#72](#72) [#72](#72) [#73](#73) [#73](#73) [#78](#78) [#72](#72) [#72](#72) [#73](#73) [#73](#73) [#72](#72)
* rebase v1 with main ([#95](#95)) ([b54b146](b54b146)), closes [#72](#72) [#72](#72) [#73](#73) [#73](#73) [#80](#80) [#80](#80) [#81](#81) [#81](#81) [#87](#87) [#87](#87) [#88](#88) [#88](#88) [#89](#89) [#89](#89) [#90](#90) [#90](#90)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants