Skip to content

Commit ee5e94a

Browse files
CCristijordaaash
andauthored
feat: Add sign and send all transactions feature (#69)
* feat: Add sign and send all transactions feature * feat: Move mode transaction send mode strictly to signAndSendAll feature * changeset --------- Co-authored-by: Jordan Sexton <1173161+jordaaash@users.noreply.github.com>
1 parent 2c354cf commit ee5e94a

File tree

5 files changed

+4453
-3715
lines changed

5 files changed

+4453
-3715
lines changed

.changeset/empty-onions-lay.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@solana/wallet-standard-features': minor
3+
---
4+
5+
Add solana:signAndSendAllTransactions feature

packages/core/features/src/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import type { SolanaSignAndSendTransactionFeature } from './signAndSendTransacti
33
import type { SolanaSignInFeature } from './signIn.js';
44
import type { SolanaSignMessageFeature } from './signMessage.js';
55
import type { SolanaSignTransactionFeature } from './signTransaction.js';
6+
import type { SolanaSignAndSendAllTransactionsFeature } from './signAndSendAllTransactions.js';
67

78
/** TODO: docs */
89
export type SolanaFeatures =
910
| SolanaSignAndSendTransactionFeature
1011
| SolanaSignInFeature
1112
| SolanaSignMessageFeature
12-
| SolanaSignTransactionFeature;
13+
| SolanaSignTransactionFeature
14+
| SolanaSignAndSendAllTransactionsFeature;
1315

1416
/** TODO: docs */
1517
export type WalletWithSolanaFeatures = WalletWithFeatures<SolanaFeatures>;
@@ -18,3 +20,4 @@ export * from './signAndSendTransaction.js';
1820
export * from './signIn.js';
1921
export * from './signMessage.js';
2022
export * from './signTransaction.js';
23+
export * from './signAndSendAllTransactions.js';
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import type { SolanaTransactionVersion } from './signTransaction.js';
2+
import type {
3+
SolanaSignAndSendTransactionInput,
4+
SolanaSignAndSendTransactionOutput,
5+
} from './signAndSendTransaction.js';
6+
7+
/** Name of the feature */
8+
export const SignAndSendAllTransactions = 'solana:signAndSendAllTransactions';
9+
10+
/** TODO: docs */
11+
export type SolanaSignAndSendAllTransactionsFeature = {
12+
/** Name of the feature. */
13+
readonly [SignAndSendAllTransactions]: {
14+
/** Version of the feature API. */
15+
readonly version: SolanaSignAndSendAllTransactionsVersion;
16+
17+
/** TODO: docs */
18+
readonly supportedTransactionVersions: readonly SolanaTransactionVersion[];
19+
20+
/**
21+
* Sign transactions using the account's secret key and send them to the chain.
22+
*
23+
* @param inputs {SolanaSignAndSendTransactionInput[]} Inputs for signing and sending multiple transactions.
24+
* @param options {SolanaSignAndSendAllTransactionsOptions} Options for signing and sending transactions.
25+
*
26+
* @return Outputs of signing and sending transactions.
27+
*/
28+
readonly signAndSendAllTransactions: SolanaSignAndSendAllTransactionsMethod;
29+
};
30+
};
31+
32+
/** Version of the feature. */
33+
export type SolanaSignAndSendAllTransactionsVersion = '1.0.0';
34+
35+
/** TODO: docs */
36+
export type SolanaSignAndSendAllTransactionsMethod = (
37+
inputs: readonly SolanaSignAndSendTransactionInput[],
38+
options?: SolanaSignAndSendAllTransactionsOptions
39+
) => Promise<readonly PromiseSettledResult<SolanaSignAndSendTransactionOutput>[]>;
40+
41+
/** Options for signing and sending multiple transactions. */
42+
export type SolanaSignAndSendAllTransactionsOptions = {
43+
/** Mode for signing and sending transactions. */
44+
readonly mode?: SolanaSignAndSendAllTransactionsMode;
45+
};
46+
47+
/** Mode for signing and sending transactions. */
48+
export type SolanaSignAndSendAllTransactionsMode = 'parallel' | 'serial';

packages/core/features/src/signAndSendTransaction.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,6 @@ export interface SolanaSignAndSendTransactionOutput {
5555

5656
/** Options for signing and sending a transaction. */
5757
export type SolanaSignAndSendTransactionOptions = SolanaSignTransactionOptions & {
58-
/** Mode for signing and sending transactions. */
59-
readonly mode?: SolanaSignAndSendTransactionMode;
60-
6158
/** Desired commitment level. If provided, confirm the transaction after sending. */
6259
readonly commitment?: SolanaTransactionCommitment;
6360

@@ -67,6 +64,3 @@ export type SolanaSignAndSendTransactionOptions = SolanaSignTransactionOptions &
6764
/** Maximum number of times for the RPC node to retry sending the transaction to the leader. */
6865
readonly maxRetries?: number;
6966
};
70-
71-
/** Mode for signing and sending transactions. */
72-
export type SolanaSignAndSendTransactionMode = 'parallel' | 'serial';

0 commit comments

Comments
 (0)