Skip to content

Commit

Permalink
feat: adds context with Handles to SubmitTxArgs, refactors tx-constru…
Browse files Browse the repository at this point in the history
…ction with SubmitTxArgs, refactors ObservableWallet to accept SubmitTxArgs
  • Loading branch information
VanessaPC committed Jun 5, 2023
1 parent 19cabfe commit 4fb085f
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 15 deletions.
8 changes: 7 additions & 1 deletion packages/core/src/Provider/TxSubmitProvider/types.ts
@@ -1,11 +1,17 @@
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import Cardano, { CardanoNodeErrors, Provider } from '../..';
import Cardano, {
// HandleResolution,
CardanoNodeErrors,
Handle,
Provider
} from '../..';

type SerializedTransaction = Cardano.util.HexBlob;

export interface SubmitTxArgs {
signedTransaction: SerializedTransaction;
context?: { handles?: Handle[] };
}

export interface TxSubmitProvider extends Provider {
Expand Down
7 changes: 3 additions & 4 deletions packages/tx-construction/src/tx-builder/TxBuilder.ts
@@ -1,13 +1,12 @@
import * as Crypto from '@cardano-sdk/crypto';
import { Cardano, HandleProvider, HandleResolution } from '@cardano-sdk/core';
import { Cardano, HandleProvider, HandleResolution, SubmitTxArgs } from '@cardano-sdk/core';
import { Logger } from 'ts-log';
import {
OutputBuilder,
OutputBuilderTxOut,
PartialTx,
PartialTxOut,
RewardAccountMissingError,
SignedTx,
TxBuilder,
TxBuilderDependencies,
TxContext,
Expand Down Expand Up @@ -41,7 +40,7 @@ type BuiltTx = {
};

interface Signer {
sign(builtTx: BuiltTx): Promise<SignedTx>;
sign(builtTx: BuiltTx): Promise<SubmitTxArgs>;
}

interface Builder {
Expand Down Expand Up @@ -76,7 +75,7 @@ class LazyTxSigner implements UnsignedTx {
return { ...tx, auxiliaryData, handles, inputSelection, ownAddresses };
}

async sign(): Promise<SignedTx> {
async sign(): Promise<SubmitTxArgs> {
return this.#signer.sign(await this.#build());
}
}
Expand Down
10 changes: 5 additions & 5 deletions packages/tx-construction/src/tx-builder/finalizeTx.ts
Expand Up @@ -4,8 +4,8 @@ import {
TransactionSigner,
util as keyManagementUtil
} from '@cardano-sdk/key-management';
import { Cardano } from '@cardano-sdk/core';
import { FinalizeTxDependencies, SignedTx, TxContext } from './types';
import { Cardano, SubmitTxArgs } from '@cardano-sdk/core';
import { FinalizeTxDependencies, TxContext } from './types';

const getSignatures = async (
keyAgent: AsyncKeyAgent,
Expand All @@ -30,7 +30,7 @@ export const finalizeTx = async (
{ ownAddresses, witness, signingOptions, auxiliaryData, isValid, handles }: TxContext,
{ inputResolver, keyAgent }: FinalizeTxDependencies,
stubSign = false
): Promise<SignedTx> => {
): Promise<SubmitTxArgs> => {
const signatures = stubSign
? await keyManagementUtil.stubSignTransaction(
tx.body,
Expand All @@ -42,10 +42,10 @@ export const finalizeTx = async (
: await getSignatures(keyAgent, tx, witness?.extraSigners, signingOptions);

return {
ctx: {
context: {
handles: handles ?? []
},
tx: {
signedTransaction: {
auxiliaryData,
body: tx.body,
id: tx.hash,
Expand Down
4 changes: 2 additions & 2 deletions packages/tx-construction/src/tx-builder/types.ts
@@ -1,4 +1,4 @@
import { Cardano, Handle, HandleProvider, HandleResolution } from '@cardano-sdk/core';
import { Cardano, Handle, HandleProvider, HandleResolution, SubmitTxArgs } from '@cardano-sdk/core';
import { CustomError } from 'ts-custom-error';

import { InputSelectionError, InputSelector, SelectionSkeleton } from '@cardano-sdk/input-selection';
Expand Down Expand Up @@ -139,7 +139,7 @@ export interface SignedTx {
*/
export interface UnsignedTx {
inspect(): Promise<TxInspection>;
sign(): Promise<SignedTx>;
sign(): Promise<SubmitTxArgs>;
}

export interface PartialTx {
Expand Down
4 changes: 2 additions & 2 deletions packages/wallet/src/types.ts
@@ -1,4 +1,4 @@
import { Asset, Cardano, EpochInfo, EraSummary, NetworkInfoProvider, TxCBOR } from '@cardano-sdk/core';
import { Asset, Cardano, EpochInfo, EraSummary, NetworkInfoProvider, SubmitTxArgs, TxCBOR } from '@cardano-sdk/core';
import { BalanceTracker, DelegationTracker, TransactionsTracker, UtxoTracker } from './services';
import { Cip30DataSignature } from '@cardano-sdk/dapp-connector';
import { GroupedAddress, cip8 } from '@cardano-sdk/key-management';
Expand Down Expand Up @@ -73,7 +73,7 @@ export interface ObservableWallet {
/**
* @throws CardanoNodeErrors.TxSubmissionError
*/
submitTx(tx: Cardano.Tx | TxCBOR): Promise<Cardano.TransactionId>;
submitTx(tx: Cardano.Tx | TxCBOR | SubmitTxArgs): Promise<Cardano.TransactionId>;

/**
* Create a TxBuilder from this wallet
Expand Down
2 changes: 1 addition & 1 deletion packages/web-extension/src/observableWallet/util.ts
Expand Up @@ -107,7 +107,7 @@ export const observableWalletProperties: RemoteApiProperties<ObservableWallet> =
initializeTx: RemoteApiPropertyType.MethodReturningPromise,
protocolParameters$: RemoteApiPropertyType.HotObservable,
signData: RemoteApiPropertyType.MethodReturningPromise,
submitTx: RemoteApiPropertyType.MethodReturningPromise,
submitTx: RemoteApiPropertyType.MethodReturningPromise, // to be refactored
syncStatus: {
isAnyRequestPending$: RemoteApiPropertyType.HotObservable,
isSettled$: RemoteApiPropertyType.HotObservable,
Expand Down

0 comments on commit 4fb085f

Please sign in to comment.