@midnight-ntwrk/wallet-sdk-unshielded-wallet 1.0.0-beta.17 → 1.0.0-beta.19

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.
@@ -20,39 +20,37 @@ export type DefaultV1Configuration = BaseV1Configuration & DefaultSyncConfigurat
20
20
  declare const V1BuilderSymbol: {
21
21
  readonly typeId: unique symbol;
22
22
  };
23
- export type V1Variant<TSerialized, TSyncUpdate, TTransaction> = Variant.Variant<typeof V1Tag, CoreWallet, null, RunningV1Variant<TSerialized, TSyncUpdate, TTransaction>> & {
23
+ export type V1Variant<TSerialized, TSyncUpdate> = Variant.Variant<typeof V1Tag, CoreWallet, null, RunningV1Variant<TSerialized, TSyncUpdate>> & {
24
24
  deserializeState: (serialized: TSerialized) => Either.Either<CoreWallet, WalletError>;
25
25
  coinsAndBalances: CoinsAndBalancesCapability<CoreWallet>;
26
26
  keys: KeysCapability<CoreWallet>;
27
27
  serialization: SerializationCapability<CoreWallet, TSerialized>;
28
28
  transactionHistory: TransactionHistoryService<UnshieldedUpdate>;
29
29
  };
30
- export type AnyV1Variant = V1Variant<any, any, any>;
31
- export type DefaultV1Variant = V1Variant<string, WalletSyncUpdate, ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Bindingish>>;
32
- export type TransactionOf<T extends AnyV1Variant> = T extends V1Variant<any, any, infer TTransaction> ? TTransaction : never;
33
- export type SerializedStateOf<T extends AnyV1Variant> = T extends V1Variant<infer TSerialized, any, any> ? TSerialized : never;
34
- export type DefaultV1Builder = V1Builder<DefaultV1Configuration, RunningV1Variant.Context<string, WalletSyncUpdate, ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Bindingish>>, string, WalletSyncUpdate, ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Bindingish>>;
35
- export declare class V1Builder<TConfig extends BaseV1Configuration = BaseV1Configuration, TContext extends Partial<RunningV1Variant.AnyContext> = object, TSerialized = never, TSyncUpdate = never, TTransaction = never> implements VariantBuilder.VariantBuilder<V1Variant<TSerialized, TSyncUpdate, TTransaction>, TConfig> {
30
+ export type AnyV1Variant = V1Variant<any, any>;
31
+ export type DefaultV1Variant = V1Variant<string, WalletSyncUpdate>;
32
+ export type TransactionOf<T extends AnyV1Variant> = T extends V1Variant<any, any> ? ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Bindingish> : never;
33
+ export type SerializedStateOf<T extends AnyV1Variant> = T extends V1Variant<infer TSerialized, any> ? TSerialized : never;
34
+ export type DefaultV1Builder = V1Builder<DefaultV1Configuration, RunningV1Variant.Context<string, WalletSyncUpdate>, string, WalletSyncUpdate>;
35
+ export declare class V1Builder<TConfig extends BaseV1Configuration = BaseV1Configuration, TContext extends Partial<RunningV1Variant.AnyContext> = object, TSerialized = never, TSyncUpdate = never> implements VariantBuilder.VariantBuilder<V1Variant<TSerialized, TSyncUpdate>, TConfig> {
36
36
  #private;
37
- constructor(buildState?: V1Builder.PartialBuildState<TConfig, TContext, TSerialized, TSyncUpdate, TTransaction>);
37
+ constructor(buildState?: V1Builder.PartialBuildState<TConfig, TContext, TSerialized, TSyncUpdate>);
38
38
  withDefaults(): DefaultV1Builder;
39
- withTransactionType<Transaction>(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate, Transaction>;
40
- withDefaultTransactionType(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate, ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Bindingish>>;
41
- withSyncDefaults(): V1Builder<TConfig & DefaultSyncConfiguration, TContext & DefaultSyncContext, TSerialized, WalletSyncUpdate, TTransaction>;
42
- withSync<TSyncConfig, TSyncContext extends Partial<RunningV1Variant.AnyContext>, TSyncUpdate>(syncService: (configuration: TSyncConfig, getContext: () => TSyncContext) => SyncService<CoreWallet, TSyncUpdate>, syncCapability: (configuration: TSyncConfig, getContext: () => TSyncContext) => SyncCapability<CoreWallet, TSyncUpdate>): V1Builder<TConfig & TSyncConfig, TContext & TSyncContext, TSerialized, TSyncUpdate, TTransaction>;
43
- withSerializationDefaults(): V1Builder<TConfig, TContext, string, TSyncUpdate, TTransaction>;
44
- withSerialization<TSerializationConfig, TSerializationContext extends Partial<RunningV1Variant.AnyContext>, TSerialized>(serializationCapability: (configuration: TSerializationConfig, getContext: () => TSerializationContext) => SerializationCapability<CoreWallet, TSerialized>): V1Builder<TConfig & TSerializationConfig, TContext & TSerializationContext, TSerialized, TSyncUpdate, TTransaction>;
45
- withTransactingDefaults(this: V1Builder<TConfig, TContext, TSerialized, TSyncUpdate, ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Bindingish>>): V1Builder<TConfig & DefaultTransactingConfiguration, TContext & DefaultTransactingContext, TSerialized, TSyncUpdate, ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Bindingish>>;
46
- withTransacting<TTransactingConfig, TTransactingContext extends Partial<RunningV1Variant.AnyContext>>(transactingCapability: (config: TTransactingConfig, getContext: () => TTransactingContext) => TransactingCapability<TTransaction, CoreWallet>): V1Builder<TConfig & TTransactingConfig, TContext & TTransactingContext, TSerialized, TSyncUpdate, TTransaction>;
47
- withCoinSelection<TCoinSelectionConfig, TCoinSelectionContext extends Partial<RunningV1Variant.AnyContext>>(coinSelection: (config: TCoinSelectionConfig, getContext: () => TCoinSelectionContext) => CoinSelection<ledger.Utxo>): V1Builder<TConfig & TCoinSelectionConfig, TContext & TCoinSelectionContext, TSerialized, TSyncUpdate, TTransaction>;
48
- withCoinSelectionDefaults(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate, TTransaction>;
49
- withCoinsAndBalancesDefaults(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate, TTransaction>;
50
- withCoinsAndBalances<TBalancesConfig, TBalancesContext extends Partial<RunningV1Variant.AnyContext>>(coinsAndBalancesCapability: (configuration: TBalancesConfig, getContext: () => TBalancesContext) => CoinsAndBalancesCapability<CoreWallet>): V1Builder<TConfig & TBalancesConfig, TContext & TBalancesContext, TSerialized, TSyncUpdate, TTransaction>;
51
- withTransactionHistoryDefaults(this: V1Builder<TConfig, TContext, TSerialized, TSyncUpdate, ledger.FinalizedTransaction>): V1Builder<TConfig & DefaultTransactionHistoryConfiguration, TContext, TSerialized, TSyncUpdate, ledger.FinalizedTransaction>;
52
- withTransactionHistory<TTransactionHistoryConfig, TTransactionHistoryContext extends Partial<RunningV1Variant.AnyContext>>(transactionHistoryService: (configuration: TTransactionHistoryConfig, getContext: () => TTransactionHistoryContext) => TransactionHistoryService<UnshieldedUpdate>): V1Builder<TConfig & TTransactionHistoryConfig, TContext & TTransactionHistoryContext, TSerialized, TSyncUpdate, TTransaction>;
53
- withKeysDefaults(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate, TTransaction>;
54
- withKeys<TKeysConfig, TKeysContext extends Partial<RunningV1Variant.AnyContext>>(keysCapability: (configuration: TKeysConfig, getContext: () => TKeysContext) => KeysCapability<CoreWallet>): V1Builder<TConfig & TKeysConfig, TContext & TKeysContext, TSerialized, TSyncUpdate, TTransaction>;
55
- build(this: V1Builder<TConfig, RunningV1Variant.Context<TSerialized, TSyncUpdate, TTransaction>, TSerialized, TSyncUpdate, TTransaction>, configuration: TConfig): V1Variant<TSerialized, TSyncUpdate, TTransaction>;
39
+ withSyncDefaults(): V1Builder<TConfig & DefaultSyncConfiguration, TContext & DefaultSyncContext, TSerialized, WalletSyncUpdate>;
40
+ withSync<TSyncConfig, TSyncContext extends Partial<RunningV1Variant.AnyContext>, TSyncUpdate>(syncService: (configuration: TSyncConfig, getContext: () => TSyncContext) => SyncService<CoreWallet, TSyncUpdate>, syncCapability: (configuration: TSyncConfig, getContext: () => TSyncContext) => SyncCapability<CoreWallet, TSyncUpdate>): V1Builder<TConfig & TSyncConfig, TContext & TSyncContext, TSerialized, TSyncUpdate>;
41
+ withSerializationDefaults(): V1Builder<TConfig, TContext, string, TSyncUpdate>;
42
+ withSerialization<TSerializationConfig, TSerializationContext extends Partial<RunningV1Variant.AnyContext>, TSerialized>(serializationCapability: (configuration: TSerializationConfig, getContext: () => TSerializationContext) => SerializationCapability<CoreWallet, TSerialized>): V1Builder<TConfig & TSerializationConfig, TContext & TSerializationContext, TSerialized, TSyncUpdate>;
43
+ withTransactingDefaults(this: V1Builder<TConfig, TContext, TSerialized, TSyncUpdate>): V1Builder<TConfig & DefaultTransactingConfiguration, TContext & DefaultTransactingContext, TSerialized, TSyncUpdate>;
44
+ withTransacting<TTransactingConfig, TTransactingContext extends Partial<RunningV1Variant.AnyContext>>(transactingCapability: (config: TTransactingConfig, getContext: () => TTransactingContext) => TransactingCapability<CoreWallet>): V1Builder<TConfig & TTransactingConfig, TContext & TTransactingContext, TSerialized, TSyncUpdate>;
45
+ withCoinSelection<TCoinSelectionConfig, TCoinSelectionContext extends Partial<RunningV1Variant.AnyContext>>(coinSelection: (config: TCoinSelectionConfig, getContext: () => TCoinSelectionContext) => CoinSelection<ledger.Utxo>): V1Builder<TConfig & TCoinSelectionConfig, TContext & TCoinSelectionContext, TSerialized, TSyncUpdate>;
46
+ withCoinSelectionDefaults(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate>;
47
+ withCoinsAndBalancesDefaults(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate>;
48
+ withCoinsAndBalances<TBalancesConfig, TBalancesContext extends Partial<RunningV1Variant.AnyContext>>(coinsAndBalancesCapability: (configuration: TBalancesConfig, getContext: () => TBalancesContext) => CoinsAndBalancesCapability<CoreWallet>): V1Builder<TConfig & TBalancesConfig, TContext & TBalancesContext, TSerialized, TSyncUpdate>;
49
+ withTransactionHistoryDefaults(this: V1Builder<TConfig, TContext, TSerialized, TSyncUpdate>): V1Builder<TConfig & DefaultTransactionHistoryConfiguration, TContext, TSerialized, TSyncUpdate>;
50
+ withTransactionHistory<TTransactionHistoryConfig, TTransactionHistoryContext extends Partial<RunningV1Variant.AnyContext>>(transactionHistoryService: (configuration: TTransactionHistoryConfig, getContext: () => TTransactionHistoryContext) => TransactionHistoryService<UnshieldedUpdate>): V1Builder<TConfig & TTransactionHistoryConfig, TContext & TTransactionHistoryContext, TSerialized, TSyncUpdate>;
51
+ withKeysDefaults(): V1Builder<TConfig, TContext, TSerialized, TSyncUpdate>;
52
+ withKeys<TKeysConfig, TKeysContext extends Partial<RunningV1Variant.AnyContext>>(keysCapability: (configuration: TKeysConfig, getContext: () => TKeysContext) => KeysCapability<CoreWallet>): V1Builder<TConfig & TKeysConfig, TContext & TKeysContext, TSerialized, TSyncUpdate>;
53
+ build(this: V1Builder<TConfig, RunningV1Variant.Context<TSerialized, TSyncUpdate>, TSerialized, TSyncUpdate>, configuration: TConfig): V1Variant<TSerialized, TSyncUpdate>;
56
54
  }
57
55
  /** @internal */
58
56
  declare namespace V1Builder {
@@ -60,8 +58,8 @@ declare namespace V1Builder {
60
58
  readonly syncService: (configuration: TConfig, getContext: () => TContext) => SyncService<CoreWallet, TSyncUpdate>;
61
59
  readonly syncCapability: (configuration: TConfig, getContext: () => TContext) => SyncCapability<CoreWallet, TSyncUpdate>;
62
60
  };
63
- type HasTransacting<TConfig, TContext, TTransaction> = {
64
- readonly transactingCapability: (configuration: TConfig, getContext: () => TContext) => TransactingCapability<TTransaction, CoreWallet>;
61
+ type HasTransacting<TConfig, TContext> = {
62
+ readonly transactingCapability: (configuration: TConfig, getContext: () => TContext) => TransactingCapability<CoreWallet>;
65
63
  };
66
64
  type HasCoinSelection<TConfig, TContext> = {
67
65
  readonly coinSelection: (configuration: TConfig, getContext: () => TContext) => CoinSelection<ledger.Utxo>;
@@ -81,9 +79,9 @@ declare namespace V1Builder {
81
79
  /**
82
80
  * The internal build state of {@link V1Builder}.
83
81
  */
84
- type FullBuildState<TConfig, TContext, TSerialized, TSyncUpdate, TTransaction> = Types.Simplify<HasSync<TConfig, TContext, TSyncUpdate> & HasSerialization<TConfig, TContext, TSerialized> & HasTransacting<TConfig, TContext, TTransaction> & HasCoinSelection<TConfig, TContext> & HasCoinsAndBalances<TConfig, TContext> & HasKeys<TConfig, TContext> & HasTransactionHistory<TConfig, TContext>>;
85
- type PartialBuildState<TConfig = object, TContext = object, TSerialized = never, TSyncUpdate = never, TTransaction = never> = {
86
- [K in keyof FullBuildState<never, never, never, never, never>]?: FullBuildState<TConfig, TContext, TSerialized, TSyncUpdate, TTransaction>[K] | undefined;
82
+ type FullBuildState<TConfig, TContext, TSerialized, TSyncUpdate> = Types.Simplify<HasSync<TConfig, TContext, TSyncUpdate> & HasSerialization<TConfig, TContext, TSerialized> & HasTransacting<TConfig, TContext> & HasCoinSelection<TConfig, TContext> & HasCoinsAndBalances<TConfig, TContext> & HasKeys<TConfig, TContext> & HasTransactionHistory<TConfig, TContext>>;
83
+ type PartialBuildState<TConfig = object, TContext = object, TSerialized = never, TSyncUpdate = never> = {
84
+ [K in keyof FullBuildState<never, never, never, never>]?: FullBuildState<TConfig, TContext, TSerialized, TSyncUpdate>[K] | undefined;
87
85
  };
88
86
  /**
89
87
  * Utility interface that manages the type variance of {@link V1Builder}.
@@ -19,8 +19,7 @@ export class V1Builder {
19
19
  this.#buildState = buildState;
20
20
  }
21
21
  withDefaults() {
22
- return this.withDefaultTransactionType()
23
- .withSyncDefaults()
22
+ return this.withSyncDefaults()
24
23
  .withSerializationDefaults()
25
24
  .withTransactingDefaults()
26
25
  .withCoinsAndBalancesDefaults()
@@ -28,16 +27,6 @@ export class V1Builder {
28
27
  .withKeysDefaults()
29
28
  .withCoinSelectionDefaults();
30
29
  }
31
- withTransactionType() {
32
- return new V1Builder({
33
- ...this.#buildState,
34
- transactingCapability: undefined,
35
- transactionHistoryService: undefined,
36
- });
37
- }
38
- withDefaultTransactionType() {
39
- return this.withTransactionType();
40
- }
41
30
  withSyncDefaults() {
42
31
  return this.withSync(makeDefaultSyncService, makeDefaultSyncCapability);
43
32
  }
@@ -10,6 +10,6 @@ export * from './RunningV1Variant.js';
10
10
  export * as Simulator from './Simulator.js';
11
11
  export * as WalletError from './WalletError.js';
12
12
  export * from './CoreWallet.js';
13
- export * from './Transaction.js';
13
+ export * from './TransactionOps.js';
14
14
  export * as TransactionHistoryStorage from '../storage/index.js';
15
15
  export * as UnshieldedState from './UnshieldedState.js';
package/dist/v1/index.js CHANGED
@@ -22,6 +22,6 @@ export * from './RunningV1Variant.js';
22
22
  export * as Simulator from './Simulator.js';
23
23
  export * as WalletError from './WalletError.js';
24
24
  export * from './CoreWallet.js';
25
- export * from './Transaction.js';
25
+ export * from './TransactionOps.js';
26
26
  export * as TransactionHistoryStorage from '../storage/index.js';
27
27
  export * as UnshieldedState from './UnshieldedState.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midnight-ntwrk/wallet-sdk-unshielded-wallet",
3
- "version": "1.0.0-beta.17",
3
+ "version": "1.0.0-beta.19",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -23,14 +23,14 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@midnight-ntwrk/ledger-v7": "7.0.0-rc.1",
26
+ "@midnight-ntwrk/ledger-v7": "7.0.0",
27
27
  "@midnight-ntwrk/wallet-sdk-abstractions": "1.0.0-beta.10",
28
- "@midnight-ntwrk/wallet-sdk-address-format": "3.0.0-beta.11",
29
- "@midnight-ntwrk/wallet-sdk-capabilities": "3.0.0-beta.11",
28
+ "@midnight-ntwrk/wallet-sdk-address-format": "3.0.0-beta.12",
29
+ "@midnight-ntwrk/wallet-sdk-capabilities": "3.0.0-beta.12",
30
30
  "@midnight-ntwrk/wallet-sdk-hd": "3.0.0-beta.8",
31
- "@midnight-ntwrk/wallet-sdk-indexer-client": "1.0.0-beta.16",
32
- "@midnight-ntwrk/wallet-sdk-utilities": "1.0.0-beta.10",
33
- "effect": "^3.17.3",
31
+ "@midnight-ntwrk/wallet-sdk-indexer-client": "1.0.0-beta.17",
32
+ "@midnight-ntwrk/wallet-sdk-utilities": "1.0.0-beta.11",
33
+ "effect": "^3.19.14",
34
34
  "rxjs": "^7.5"
35
35
  },
36
36
  "scripts": {
@@ -46,6 +46,7 @@
46
46
  },
47
47
  "devDependencies": {
48
48
  "eslint": "^9.37.0",
49
+ "fast-check": "^4.5.3",
49
50
  "prettier": "^3.7.0",
50
51
  "publint": "~0.3.14",
51
52
  "rimraf": "^6.0.1",
@@ -1,25 +0,0 @@
1
- import { Either } from 'effect';
2
- import { Imbalances } from '@midnight-ntwrk/wallet-sdk-capabilities';
3
- import { TransactionImbalances } from './TransactionImbalances.js';
4
- import * as ledger from '@midnight-ntwrk/ledger-v7';
5
- import { TransactingError, WalletError } from './WalletError.js';
6
- export declare const isIntentBound: (intent: ledger.Intent<ledger.Signaturish, ledger.Proofish, ledger.Bindingish>) => boolean;
7
- export type TransactionTrait<Tx> = {
8
- id(tx: Tx): string;
9
- getOfferSignatureData: (transaction: Tx, segment: number) => Either.Either<Uint8Array, WalletError>;
10
- getSegments(transaction: Tx): number[];
11
- addOfferSignature(transaction: Tx, signature: ledger.Signature, segment: number): Either.Either<Tx, WalletError>;
12
- bindTransaction(transaction: ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.PreBinding>): Either.Either<ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Binding>, WalletError>;
13
- };
14
- export declare const TransactionTrait: {
15
- default: TransactionTrait<ledger.UnprovenTransaction>;
16
- shared: {
17
- getOfferSignatureData(tx: ledger.UnprovenTransaction, segment: number): Either.Either<Uint8Array<ArrayBufferLike>, WalletError>;
18
- addOfferSignature(transaction: ledger.UnprovenTransaction, signature: ledger.Signature, segment?: number): Either.Either<ledger.UnprovenTransaction, WalletError>;
19
- getSegments(transaction: ledger.UnprovenTransaction): number[];
20
- bindTransaction(transaction: ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.PreBinding>): Either.Either<ledger.Transaction<ledger.SignatureEnabled, ledger.Proofish, ledger.Binding>, TransactingError>;
21
- getImbalances(tx: ledger.FinalizedTransaction | ledger.UnprovenTransaction | ledger.ProofErasedTransaction): TransactionImbalances;
22
- getGuaranteedImbalances: (tx: ledger.FinalizedTransaction | ledger.UnprovenTransaction | ledger.ProofErasedTransaction) => Imbalances;
23
- getFallibleImbalances: (tx: ledger.FinalizedTransaction | ledger.UnprovenTransaction | ledger.ProofErasedTransaction) => Imbalances;
24
- };
25
- };
@@ -1,155 +0,0 @@
1
- // This file is part of MIDNIGHT-WALLET-SDK.
2
- // Copyright (C) 2025 Midnight Foundation
3
- // SPDX-License-Identifier: Apache-2.0
4
- // Licensed under the Apache License, Version 2.0 (the "License");
5
- // You may not use this file except in compliance with the License.
6
- // You may obtain a copy of the License at
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- import { Either, pipe } from 'effect';
14
- import { Imbalances } from '@midnight-ntwrk/wallet-sdk-capabilities';
15
- import * as ledger from '@midnight-ntwrk/ledger-v7';
16
- import { TransactingError } from './WalletError.js';
17
- export const isIntentBound = (intent) => {
18
- return intent.binding instanceof ledger.Binding;
19
- };
20
- export const TransactionTrait = new (class {
21
- default = {
22
- getOfferSignatureData(tx, segment) {
23
- return TransactionTrait.shared.getOfferSignatureData(tx, segment);
24
- },
25
- getSegments(tx) {
26
- return TransactionTrait.shared.getSegments(tx);
27
- },
28
- addOfferSignature(transaction, signature, segment) {
29
- return TransactionTrait.shared.addOfferSignature(transaction, signature, segment);
30
- },
31
- bindTransaction(transaction) {
32
- return TransactionTrait.shared.bindTransaction(transaction);
33
- },
34
- id(tx) {
35
- return tx.identifiers().at(0);
36
- },
37
- };
38
- shared = {
39
- getOfferSignatureData(tx, segment) {
40
- return Either.try({
41
- try: () => {
42
- if (!tx.intents) {
43
- throw new TransactingError({ message: 'Transaction has no intents' });
44
- }
45
- const intent = tx.intents.get(segment);
46
- if (!intent) {
47
- throw new TransactingError({ message: `Intent with segment ${segment} was not found` });
48
- }
49
- return pipe(isIntentBound(intent) ? intent : intent.bind(segment), (boundIntent) => boundIntent.signatureData(segment));
50
- },
51
- catch: (error) => error instanceof TransactingError
52
- ? error
53
- : new TransactingError({ message: 'Failed to get offer signature data', cause: error }),
54
- });
55
- },
56
- addOfferSignature(transaction, signature, segment = 1) {
57
- return Either.gen(function* () {
58
- if (!transaction.intents || !transaction.intents.size) {
59
- throw new TransactingError({ message: 'No intents found in the provided transaction' });
60
- }
61
- const intent = transaction.intents.get(segment);
62
- if (!intent) {
63
- throw new TransactingError({ message: 'Intent with a given segment was not found' });
64
- }
65
- const isBound = isIntentBound(intent);
66
- if (isBound)
67
- return transaction;
68
- let updatedIntent = intent;
69
- if (intent.guaranteedUnshieldedOffer) {
70
- const offer = intent.guaranteedUnshieldedOffer;
71
- const inputsLen = offer.inputs.length;
72
- const signatures = [];
73
- for (let i = 0; i < inputsLen; ++i) {
74
- signatures.push(offer.signatures.at(i) ?? signature);
75
- }
76
- updatedIntent = yield* Either.try({
77
- try: () => {
78
- const offerWithSignatures = offer.addSignatures(signatures);
79
- updatedIntent.guaranteedUnshieldedOffer = offerWithSignatures;
80
- return updatedIntent;
81
- },
82
- catch: (error) => new TransactingError({
83
- message: `Failed to add guaranteed signature at segment ${segment}`,
84
- cause: error,
85
- }),
86
- });
87
- }
88
- if (intent.fallibleUnshieldedOffer) {
89
- const offer = intent.fallibleUnshieldedOffer;
90
- const inputsLen = offer.inputs.length;
91
- const signatures = [];
92
- for (let i = 0; i < inputsLen; ++i) {
93
- signatures.push(offer.signatures.at(i) ?? signature);
94
- }
95
- updatedIntent = yield* Either.try({
96
- try: () => {
97
- const offerWithSignatures = offer.addSignatures(signatures);
98
- updatedIntent.fallibleUnshieldedOffer = offerWithSignatures;
99
- return updatedIntent;
100
- },
101
- catch: (error) => new TransactingError({
102
- message: `Failed to add fallible signature at segment ${segment}`,
103
- cause: error,
104
- }),
105
- });
106
- }
107
- transaction.intents = transaction.intents.set(segment, updatedIntent);
108
- return transaction;
109
- });
110
- },
111
- getSegments(transaction) {
112
- return transaction.intents && transaction.intents.size > 0 ? transaction.intents.keys().toArray() : [];
113
- },
114
- bindTransaction(transaction) {
115
- return Either.try({
116
- try: () => transaction.bind(),
117
- catch: (error) => new TransactingError({ message: 'Failed to bind transaction', cause: error }),
118
- });
119
- },
120
- getImbalances(tx) {
121
- const guaranteedImbalances = TransactionTrait.shared.getGuaranteedImbalances(tx);
122
- const fallibleImbalances = TransactionTrait.shared.getFallibleImbalances(tx);
123
- return pipe({
124
- guaranteed: guaranteedImbalances,
125
- fallible: fallibleImbalances,
126
- fees: 0n,
127
- });
128
- },
129
- getGuaranteedImbalances: (tx) => {
130
- const rawGuaranteedImbalances = tx
131
- .imbalances(0)
132
- .entries()
133
- .filter(([token]) => token.tag === 'shielded')
134
- .map(([token, value]) => {
135
- return [token.raw.toString(), value];
136
- });
137
- return Imbalances.fromEntries(rawGuaranteedImbalances);
138
- },
139
- getFallibleImbalances: (tx) => {
140
- try {
141
- const rawFallibleImbalances = tx
142
- .imbalances(1)
143
- .entries()
144
- .filter(([token]) => token.tag === 'shielded')
145
- .map(([token, value]) => {
146
- return [token.raw.toString(), value];
147
- });
148
- return Imbalances.fromEntries(rawFallibleImbalances);
149
- }
150
- catch {
151
- return Imbalances.empty();
152
- }
153
- },
154
- };
155
- })();
@@ -1,8 +0,0 @@
1
- import { Imbalances } from '@midnight-ntwrk/wallet-sdk-capabilities';
2
- export type TransactionImbalances = Readonly<{
3
- guaranteed: Imbalances;
4
- fallible: Imbalances;
5
- }>;
6
- export declare const TransactionImbalances: {
7
- empty: () => TransactionImbalances;
8
- };
@@ -1,21 +0,0 @@
1
- // This file is part of MIDNIGHT-WALLET-SDK.
2
- // Copyright (C) 2025 Midnight Foundation
3
- // SPDX-License-Identifier: Apache-2.0
4
- // Licensed under the Apache License, Version 2.0 (the "License");
5
- // You may not use this file except in compliance with the License.
6
- // You may obtain a copy of the License at
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- // Unless required by applicable law or agreed to in writing, software
9
- // distributed under the License is distributed on an "AS IS" BASIS,
10
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
- // See the License for the specific language governing permissions and
12
- // limitations under the License.
13
- import { Imbalances } from '@midnight-ntwrk/wallet-sdk-capabilities';
14
- export const TransactionImbalances = new (class {
15
- empty = () => {
16
- return {
17
- guaranteed: Imbalances.empty(),
18
- fallible: Imbalances.empty(),
19
- };
20
- };
21
- })();