Skip to content

Commit df7b4e6

Browse files
itsyaasirUMR1352eike-hassgithub-actions[bot]identity-bot
authored
Add core client traits for read-only and read-write IOTA operations (#1640)
* Add core client traits for read-only and read-write IOTA operations * Refactor CoreClient traits to streamline async handling and remove unused transaction execution code * Refactor CoreClient trait to use generic signer type in method signature * Remove network_id method from client module * controllerCap and delegation token, creation of identity with controllers that can delegate * use delegation token and controller token interchangeably * delegation token revocation and unrevocation * delete delegation token * Refactor client traits and implement CoreClient interface for identity operations * Update CoreClientReadOnly trait and add OptionalSync bounds to Transaction methods The changes add OptionalSync bounds to Transaction trait methods and update the CoreClientReadOnly trait to handle object * make WASM code work with controller token abstraction, delegate token Tx * Refactor client module and fix object lookup error handling * clippy & fmt * Enhance CoreClientReadOnly trait with detailed documentation for object retrieval methods * fix issue with ts examples * cargo fix * format move pkg * use Move 2024 macros where possible * Update Move.toml to use edition 2024 * new upgrade script and updated setup to have toml cli * fix type in CI workflow * fix toml init * overwrite Move.lock after messing things up * Deploy devnet (#1659) * bump version * add toml-cli CI artifacts to gitignore * remove toml-cli CI artifacts --------- Co-authored-by: Identity Bot <[email protected]> Co-authored-by: umr1352 <[email protected]> * Fixed several issues for the wasm32 build * Deploy testnet (#1660) * bump version * update well_known_networks --------- Co-authored-by: Identity Bot <[email protected]> Co-authored-by: umr1352 <[email protected]> Co-authored-by: Enrico Marconi <[email protected]> * fix ts docs * Make code compile * adapt asset txs * fix examples * Partially update identity_wasm to use generic CoreClient * adapt all TS transactions * update ts examples * Several send-sync related feature flag fixes * identity_iota: * "send-sync" is now handed over as "send-sync" to identity_iota_core * "send-sync-storage" is now handed over as "send-sync-storage" to identity_iota_core * examples crate does now use "identity_iota/send-sync" instead of "identity_iota/send-sync-storage" * identity-grpc crate does now use "identity_iota/send-sync" instead of "identity_iota/send-sync-storage" * Fix TS examples * Use "send-sync-client-ext" feature flag instead target_arch = "wasm32" in IdentityClientReadOnly::get_identity() to control Send constraint * Use "send-sync" feature flag instead of "send-sync-client-ext" in IdentityClientReadOnly::get_identity() to control Send constraint + identity_resolver uses "identity_iota_core?/send-sync" now if FF "send-sync-client" is used --------- Co-authored-by: umr1352 <[email protected]> Co-authored-by: Eike Haß <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Identity Bot <[email protected]> Co-authored-by: chrisgitiota <[email protected]> Co-authored-by: Enrico Marconi <[email protected]>
1 parent 658b6b5 commit df7b4e6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1484
-686
lines changed

bindings/grpc/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ path = "src/main.rs"
2020
anyhow = "1.0"
2121
futures = { version = "0.3" }
2222
identity_eddsa_verifier = { path = "../../identity_eddsa_verifier" }
23-
identity_iota = { path = "../../identity_iota", features = ["resolver", "sd-jwt", "domain-linkage", "domain-linkage-fetch", "status-list-2021", "iota-client", "send-sync-storage"] }
23+
identity_iota = { path = "../../identity_iota", features = ["resolver", "sd-jwt", "domain-linkage", "domain-linkage-fetch", "status-list-2021", "iota-client", "send-sync"] }
2424
identity_jose = { path = "../../identity_jose" }
2525
identity_storage = { path = "../../identity_storage", features = ["memstore"] }
2626
identity_stronghold = { path = "../../identity_stronghold", features = ["send-sync-storage"] }

bindings/wasm/identity_wasm/examples/src/0_basic/0_create_did.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export async function createIdentity(): Promise<void> {
2323
console.log("Creating new identity");
2424
const { output: identity } = await identityClient
2525
.createIdentity(unpublished)
26-
.finish()
26+
.finish(identityClient.readOnly())
2727
.buildAndExecute(identityClient);
2828
did = identity.didDocument().id();
2929

bindings/wasm/identity_wasm/examples/src/0_basic/1_update_did.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export async function updateIdentity() {
2424
// create new identity for this account and publish document for it
2525
const { output: identity } = await identityClient
2626
.createIdentity(unpublished)
27-
.finish()
27+
.finish(identityClient.readOnly())
2828
.buildAndExecute(identityClient);
2929
const did = identity.didDocument().id();
3030

@@ -59,7 +59,7 @@ export async function updateIdentity() {
5959
let controllerToken = await identity.getControllerToken(identityClient);
6060

6161
let maybePendingProposal = await identity
62-
.updateDidDocument(resolved.clone(), controllerToken!)
62+
.updateDidDocument(resolved.clone(), controllerToken!, identityClient.readOnly())
6363
.withGasBudget(TEST_GAS_BUDGET)
6464
.buildAndExecute(identityClient)
6565
.then(result => result.output);

bindings/wasm/identity_wasm/examples/src/0_basic/2_resolve_did.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export async function resolveIdentity() {
2727
// create new identity for this account and publish document for it
2828
const { output: identity } = await identityClient
2929
.createIdentity(unpublished)
30-
.finish()
30+
.finish(identityClient.readOnly())
3131
.buildAndExecute(identityClient);
3232
const did = identity.didDocument().id();
3333

bindings/wasm/identity_wasm/examples/src/0_basic/3_deactivate_did.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export async function deactivateIdentity() {
1616
// create new identity for this account and publish document for it
1717
const { output: identity } = await identityClient
1818
.createIdentity(unpublished)
19-
.finish()
19+
.finish(identityClient.readOnly())
2020
.buildAndExecute(identityClient);
2121
const did = identity.didDocument().id();
2222

@@ -28,7 +28,7 @@ export async function deactivateIdentity() {
2828
const controllerToken = await identity.getControllerToken(identityClient);
2929
// Deactivate the DID.
3030
await identity
31-
.deactivateDid(controllerToken!)
31+
.deactivateDid(controllerToken!, identityClient.readOnly())
3232
.withGasBudget(TEST_GAS_BUDGET)
3333
.buildAndExecute(identityClient);
3434

@@ -43,7 +43,7 @@ export async function deactivateIdentity() {
4343
// Re-activate the DID by publishing a valid DID document.
4444
console.log("Publishing this:", JSON.stringify(resolved, null, 2));
4545
await identity
46-
.updateDidDocument(resolved, controllerToken!)
46+
.updateDidDocument(resolved, controllerToken!, identityClient.readOnly())
4747
.withGasBudget(TEST_GAS_BUDGET)
4848
.buildAndExecute(identityClient);
4949

bindings/wasm/identity_wasm/examples/src/0_basic/4_delete_did.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export async function deleteIdentityDID() {
1616
// create new identity for this account and publish document for it
1717
const { output: identity } = await identityClient
1818
.createIdentity(unpublished)
19-
.finish()
19+
.finish(identityClient.readOnly())
2020
.buildAndExecute(identityClient);
2121
const did = identity.didDocument().id();
2222

@@ -29,7 +29,7 @@ export async function deleteIdentityDID() {
2929

3030
// delete the DID.
3131
await identity
32-
.deleteDid(controllerToken!)
32+
.deleteDid(controllerToken!, identityClient.readOnly())
3333
.withGasBudget(TEST_GAS_BUDGET)
3434
.buildAndExecute(identityClient);
3535

@@ -51,7 +51,7 @@ export async function deleteIdentityDID() {
5151
// Trying to update a deleted DID must fail!
5252
try {
5353
await identity
54-
.updateDidDocument(resolved, controllerToken!)
54+
.updateDidDocument(resolved, controllerToken!, identityClient.readOnly())
5555
.withGasBudget(TEST_GAS_BUDGET)
5656
.buildAndExecute(identityClient);
5757
} catch (_) {

bindings/wasm/identity_wasm/examples/src/0_basic/5_create_vc.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export async function createVC() {
2929
const [unpublishedIssuerDocument, issuerFragment] = await createDocumentForNetwork(issuerStorage, network);
3030
const { output: issuerIdentity } = await issuerClient
3131
.createIdentity(unpublishedIssuerDocument)
32-
.finish()
32+
.finish(issuerClient.readOnly())
3333
.buildAndExecute(issuerClient);
3434
const issuerDocument = issuerIdentity.didDocument();
3535

@@ -39,7 +39,7 @@ export async function createVC() {
3939
const [unpublishedAliceDocument] = await createDocumentForNetwork(aliceStorage, network);
4040
const { output: aliceIdentity } = await aliceClient
4141
.createIdentity(unpublishedAliceDocument)
42-
.finish()
42+
.finish(aliceClient.readOnly())
4343
.buildAndExecute(aliceClient);
4444
const aliceDocument = aliceIdentity.didDocument();
4545

bindings/wasm/identity_wasm/examples/src/0_basic/6_create_vp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export async function createVP() {
4545
const [unpublishedIssuerDocument, issuerFragment] = await createDocumentForNetwork(issuerStorage, network);
4646
const { output: issuerIdentity } = await issuerClient
4747
.createIdentity(unpublishedIssuerDocument)
48-
.finish()
48+
.finish(issuerClient.readOnly())
4949
.buildAndExecute(issuerClient);
5050
const issuerDocument = issuerIdentity.didDocument();
5151

@@ -55,7 +55,7 @@ export async function createVP() {
5555
const [unpublishedAliceDocument, aliceFragment] = await createDocumentForNetwork(aliceStorage, network);
5656
const { output: aliceIdentity } = await aliceClient
5757
.createIdentity(unpublishedAliceDocument)
58-
.finish()
58+
.finish(aliceClient.readOnly())
5959
.buildAndExecute(aliceClient);
6060
const aliceDocument = aliceIdentity.didDocument();
6161

bindings/wasm/identity_wasm/examples/src/0_basic/7_revoke_vc.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export async function revokeVC() {
5151
const [unpublishedIssuerDocument, issuerFragment] = await createDocumentForNetwork(issuerStorage, network);
5252
const { output: issuerIdentity } = await issuerClient
5353
.createIdentity(unpublishedIssuerDocument)
54-
.finish()
54+
.finish(issuerClient.readOnly())
5555
.buildAndExecute(issuerClient);
5656
let issuerDocument = issuerIdentity.didDocument();
5757

@@ -61,7 +61,7 @@ export async function revokeVC() {
6161
const [unpublishedAliceDocument, aliceFragment] = await createDocumentForNetwork(aliceStorage, network);
6262
const { output: aliceIdentity } = await aliceClient
6363
.createIdentity(unpublishedAliceDocument)
64-
.finish()
64+
.finish(aliceClient.readOnly())
6565
.buildAndExecute(aliceClient);
6666
const aliceDocument = aliceIdentity.didDocument();
6767

@@ -77,7 +77,7 @@ export async function revokeVC() {
7777

7878
// Publish the updated document.
7979
await issuerIdentity
80-
.updateDidDocument(issuerDocument, issuerIdentityToken!)
80+
.updateDidDocument(issuerDocument, issuerIdentityToken!, issuerClient.readOnly())
8181
.withGasBudget(TEST_GAS_BUDGET)
8282
.buildAndExecute(issuerClient);
8383

@@ -133,7 +133,7 @@ export async function revokeVC() {
133133

134134
// Publish the changes.
135135
await issuerIdentity
136-
.updateDidDocument(issuerDocument, issuerIdentityToken!)
136+
.updateDidDocument(issuerDocument, issuerIdentityToken!, issuerClient.readOnly())
137137
.withGasBudget(TEST_GAS_BUDGET)
138138
.buildAndExecute(issuerClient);
139139

@@ -163,7 +163,7 @@ export async function revokeVC() {
163163

164164
// Publish the changes.
165165
await issuerIdentity
166-
.updateDidDocument(issuerDocument, issuerIdentityToken!)
166+
.updateDidDocument(issuerDocument, issuerIdentityToken!, issuerClient.readOnly())
167167
.withGasBudget(TEST_GAS_BUDGET)
168168
.buildAndExecute(issuerClient);
169169

bindings/wasm/identity_wasm/examples/src/1_advanced/11_advanced_transactions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export async function advancedTransaction(): Promise<void> {
2121

2222
const [txDataBcs, signatures, tx] = await aliceClient
2323
.createIdentity(new IotaDocument(aliceClient.network()))
24-
.finish()
24+
.finish(aliceClient.readOnly())
2525
.withSender(aliceClient.senderAddress())
2626
.withSponsor(aliceClient.readOnly(), (tx_data: TransactionDataBuilder) => bobSponsorFn(tx_data, bobClient))
2727
.then(txBuilder => txBuilder.build(aliceClient));

bindings/wasm/identity_wasm/examples/src/1_advanced/4_custom_resolution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export async function customResolution() {
6565
// create new identity for this account and publish document for it, DID of it will be resolved later on
6666
const { output: identity } = await identityClient
6767
.createIdentity(unpublished)
68-
.finish()
68+
.finish(identityClient.readOnly())
6969
.buildAndExecute(identityClient);
7070
const did = identity.didDocument().id();
7171

bindings/wasm/identity_wasm/examples/src/1_advanced/5_domain_linkage.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export async function domainLinkage() {
3333
// create new identity for this account and publish document for it
3434
const { output: identity } = await identityClient
3535
.createIdentity(unpublished)
36-
.finish()
36+
.finish(identityClient.readOnly())
3737
.buildAndExecute(identityClient);
3838
const document = identity.didDocument();
3939
const did = document.id();
@@ -54,7 +54,9 @@ export async function domainLinkage() {
5454
});
5555
document.insertService(linkedDomainService.toService());
5656
const controllerToken = await identity.getControllerToken(identityClient);
57-
await identity.updateDidDocument(document, controllerToken!).buildAndExecute(identityClient);
57+
await identity.updateDidDocument(document, controllerToken!, identityClient.readOnly()).buildAndExecute(
58+
identityClient,
59+
);
5860

5961
let updatedDidDocument = identity.didDocument();
6062
console.log("Updated DID document:", JSON.stringify(updatedDidDocument, null, 2));

bindings/wasm/identity_wasm/examples/src/1_advanced/6_sd_jwt.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export async function sdJwt() {
3838
const [unpublishedIssuerDocument, issuerFragment] = await createDocumentForNetwork(issuerStorage, network);
3939
const { output: issuerIdentity } = await issuerClient
4040
.createIdentity(unpublishedIssuerDocument)
41-
.finish()
41+
.finish(issuerClient.readOnly())
4242
.buildAndExecute(issuerClient);
4343
const issuerDocument = issuerIdentity.didDocument();
4444

@@ -48,7 +48,7 @@ export async function sdJwt() {
4848
const [unpublishedAliceDocument, aliceFragment] = await createDocumentForNetwork(aliceStorage, network);
4949
const { output: aliceIdentity } = await aliceClient
5050
.createIdentity(unpublishedAliceDocument)
51-
.finish()
51+
.finish(aliceClient.readOnly())
5252
.buildAndExecute(aliceClient);
5353
const aliceDocument = aliceIdentity.didDocument();
5454

bindings/wasm/identity_wasm/examples/src/1_advanced/7_status_list_2021.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export async function statusList2021() {
3333
const [unpublishedIssuerDocument, issuerFragment] = await createDocumentForNetwork(issuerStorage, network);
3434
const { output: issuerIdentity } = await issuerClient
3535
.createIdentity(unpublishedIssuerDocument)
36-
.finish()
36+
.finish(issuerClient.readOnly())
3737
.buildAndExecute(issuerClient);
3838
const issuerDocument = issuerIdentity.didDocument();
3939

@@ -43,7 +43,7 @@ export async function statusList2021() {
4343
const [unpublishedAliceDocument] = await createDocumentForNetwork(aliceStorage, network);
4444
const { output: aliceIdentity } = await aliceClient
4545
.createIdentity(unpublishedAliceDocument)
46-
.finish()
46+
.finish(aliceClient.readOnly())
4747
.buildAndExecute(aliceClient);
4848
const aliceDocument = aliceIdentity.didDocument();
4949

bindings/wasm/identity_wasm/examples/src/1_advanced/8_zkp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export async function zkp() {
4040
);
4141
const { output: issuerIdentity } = await issuerClient
4242
.createIdentity(unpublishedIssuerDocument)
43-
.finish()
43+
.finish(issuerClient.readOnly())
4444
.buildAndExecute(issuerClient);
4545
const issuerDocument = issuerIdentity.didDocument();
4646

bindings/wasm/identity_wasm/examples/src/1_advanced/9_zkp_revocation.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export async function zkp_revocation() {
4545
unpublishedIssuerDocument.insertService(service);
4646
const { output: issuerIdentity } = await issuerClient
4747
.createIdentity(unpublishedIssuerDocument)
48-
.finish()
48+
.finish(issuerClient.readOnly())
4949
.buildAndExecute(issuerClient);
5050
let issuerDocument = issuerIdentity.didDocument();
5151

@@ -55,7 +55,7 @@ export async function zkp_revocation() {
5555
const [unpublishedholderDocument] = await createDocumentForNetwork(holderStorage, network);
5656
const { output: holderIdentity } = await holderClient
5757
.createIdentity(unpublishedholderDocument)
58-
.finish()
58+
.finish(holderClient.readOnly())
5959
.buildAndExecute(holderClient);
6060
const holderDocument = holderIdentity.didDocument();
6161

@@ -196,7 +196,10 @@ export async function zkp_revocation() {
196196
// Update the RevocationBitmap service in the issuer's DID Document.
197197
// This revokes the credential's unique index.
198198
issuerDocument.revokeCredentials("my-revocation-service", 5);
199-
await issuerIdentity.updateDidDocument(issuerDocument, issuerIdentityToken!).buildAndExecute(issuerClient);
199+
await issuerIdentity.updateDidDocument(issuerDocument, issuerIdentityToken!, issuerClient.readOnly())
200+
.buildAndExecute(
201+
issuerClient,
202+
);
200203
issuerDocument = issuerIdentity.didDocument();
201204

202205
// Holder checks if his credential has been revoked by the Issuer
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { IotaClient } from "@iota/iota-sdk/client";
2+
import { PublicKey } from "@iota/iota-sdk/cryptography";
3+
import { TransactionSigner } from "~identity_wasm";
4+
5+
export interface CoreClientReadOnly {
6+
packageId(): string;
7+
network(): string;
8+
iotaClient(): IotaClient;
9+
// TODO: add all interface's methods.
10+
}
11+
12+
export interface CoreClient<S extends TransactionSigner> extends CoreClientReadOnly {
13+
signer(): S;
14+
senderAddress(): string;
15+
senderPublicKey(): PublicKey;
16+
}

bindings/wasm/identity_wasm/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export * from "./key_id_storage";
1010
export * from "~identity_wasm";
1111

1212
export * from "./controller";
13+
export * from "./core_client";
1314
export * from "./proposal";
1415
export * from "./transaction_internal";
1516

bindings/wasm/identity_wasm/lib/proposal.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2021-2025 IOTA Stiftung
22
// SPDX-License-Identifier: Apache-2.0
33

4-
import { ConfigChange, IdentityClient, SendAction, UpdateDid } from "~identity_wasm";
4+
import { ConfigChange, ControllerToken, IdentityClient, OnChainIdentity, SendAction, UpdateDid } from "~identity_wasm";
55
import { Transaction, TransactionBuilder } from "./transaction_internal";
66

77
export type Action = UpdateDid | SendAction | ConfigChange;
@@ -20,6 +20,10 @@ export interface Proposal<A extends Action> {
2020
votes: bigint;
2121
voters: Set<string>;
2222
expirationEpoch?: bigint;
23-
approve: (client: IdentityClient) => TransactionBuilder<ApproveProposal>;
24-
intoTx: (client: IdentityClient) => TransactionBuilder<ExecuteProposal<A>>;
23+
approve: (
24+
identity: OnChainIdentity,
25+
controllerToken: ControllerToken,
26+
client: IdentityClient,
27+
) => TransactionBuilder<ApproveProposal>;
28+
intoTx: (controllerToken: ControllerToken, client: IdentityClient) => TransactionBuilder<ExecuteProposal<A>>;
2529
}

bindings/wasm/identity_wasm/lib/transaction_internal.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33

44
import { IotaObjectRef, IotaTransactionBlockResponse, TransactionEffects } from "@iota/iota-sdk/client";
55
import { TransactionDataBuilder } from "@iota/iota-sdk/transactions";
6-
import { IdentityClient, IdentityClientReadOnly } from "~identity_wasm";
6+
import { CoreClient, CoreClientReadOnly } from "core_client";
7+
import { TransactionSigner } from "~identity_wasm";
78

89
export interface TransactionOutput<T extends Transaction<unknown>> {
910
response: IotaTransactionBlockResponse;
1011
output: Awaited<ReturnType<T["apply"]>>;
1112
}
1213

1314
export interface Transaction<Output> {
14-
buildProgrammableTransaction(client: IdentityClientReadOnly): Promise<Uint8Array>;
15-
apply(effects: TransactionEffects, client: IdentityClientReadOnly): Promise<Output>;
15+
buildProgrammableTransaction(client: CoreClientReadOnly): Promise<Uint8Array>;
16+
apply(effects: TransactionEffects, client: CoreClientReadOnly): Promise<Output>;
1617
}
1718

1819
export type SponsorFn = (tx_data: TransactionDataBuilder) => Promise<string>;
@@ -24,8 +25,8 @@ export interface TransactionBuilder<T extends Transaction<unknown>> {
2425
withGasOwner(owner: string): TransactionBuilder<T>;
2526
withGasPayment(payment: IotaObjectRef[]): TransactionBuilder<T>;
2627
withSender(sender: String): TransactionBuilder<T>;
27-
withSignature(client: IdentityClient): TransactionBuilder<T>;
28-
withSponsor(client: IdentityClientReadOnly, sponsorFn: SponsorFn): Promise<TransactionBuilder<T>>;
29-
build(client: IdentityClient): Promise<[Uint8Array, string[], T]>;
30-
buildAndExecute(client: IdentityClient): Promise<TransactionOutput<T>>;
28+
withSignature<S extends TransactionSigner>(client: CoreClient<S>): TransactionBuilder<T>;
29+
withSponsor(client: CoreClientReadOnly, sponsorFn: SponsorFn): Promise<TransactionBuilder<T>>;
30+
build<S extends TransactionSigner>(client: CoreClient<S>): Promise<[Uint8Array, string[], T]>;
31+
buildAndExecute<S extends TransactionSigner>(client: CoreClient<S>): Promise<TransactionOutput<T>>;
3132
}

bindings/wasm/identity_wasm/src/error.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use identity_iota::storage::key_id_storage::KeyIdStorageResult;
99
use identity_iota::storage::key_storage::KeyStorageError;
1010
use identity_iota::storage::key_storage::KeyStorageErrorKind;
1111
use identity_iota::storage::key_storage::KeyStorageResult;
12+
use iota_interaction_ts::AdapterError;
1213
use std::borrow::Cow;
1314
use std::fmt::Debug;
1415
use std::fmt::Display;
@@ -312,6 +313,15 @@ impl From<identity_iota::credential::sd_jwt_vc::Error> for WasmError<'_> {
312313
}
313314
}
314315

316+
impl From<AdapterError> for WasmError<'_> {
317+
fn from(error: AdapterError) -> Self {
318+
Self {
319+
name: Cow::Borrowed("TsSdkError"),
320+
message: Cow::Owned(ErrorMessage(&error).to_string()),
321+
}
322+
}
323+
}
324+
315325
/// Convenience struct to convert Result<JsValue, JsValue> to errors in the Rust library.
316326
pub struct JsValueResult(pub(crate) Result<JsValue>);
317327

0 commit comments

Comments
 (0)