Skip to content

Commit 1ba488b

Browse files
committed
fix: improve transaction typedefs
1 parent fbc3d79 commit 1ba488b

File tree

1 file changed

+28
-22
lines changed

1 file changed

+28
-22
lines changed

types/transaction.d.ts

+28-22
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ export enum TransactionOperations {
3333
}
3434

3535
export interface TransactionCommon<
36-
O = TransactionOperations,
37-
A = Record<string, unknown>,
38-
M = Record<string, unknown>
36+
O extends TransactionOperations = TransactionOperations.CREATE,
37+
A extends Record<string, any> = Record<string, unknown>,
38+
M extends Record<string, any> = Record<string, unknown>
3939
> {
4040
id?: string;
4141
inputs: TransactionInput[];
@@ -47,16 +47,16 @@ export interface TransactionCommon<
4747
}
4848

4949
export interface TransactionCommonSigned<
50-
O = TransactionOperations,
51-
A = Record<string, unknown>,
52-
M = Record<string, unknown>
50+
O extends TransactionOperations = TransactionOperations.CREATE,
51+
A extends Record<string, any> = Record<string, unknown>,
52+
M extends Record<string, any> = Record<string, unknown>
5353
> extends Omit<TransactionCommon<O, A, M>, 'id'> {
5454
id: string;
5555
}
5656

5757
export type TransactionAssetMap<
5858
Operation,
59-
A = Record<string, unknown>
59+
A extends Record<string, any>
6060
> = Operation extends TransactionOperations.CREATE
6161
? {
6262
data: A;
@@ -66,18 +66,19 @@ export type TransactionAssetMap<
6666
};
6767

6868
export interface CreateTransaction<
69-
A = Record<string, unknown>,
70-
M = Record<string, unknown>
69+
A extends Record<string, any> = Record<string, unknown>,
70+
M extends Record<string, any> = Record<string, unknown>
7171
> extends TransactionCommon<TransactionOperations.CREATE, A, M> {
7272
id: string;
7373
asset: TransactionAssetMap<TransactionOperations.CREATE, A>;
7474
operation: TransactionOperations.CREATE;
7575
}
7676

77-
export interface TransferTransaction<M = Record<string, unknown>>
78-
extends TransactionCommon<TransactionOperations.TRANSFER, any, M> {
77+
export interface TransferTransaction<
78+
M extends Record<string, any> = Record<string, unknown>
79+
> extends TransactionCommon<TransactionOperations.TRANSFER, any, M> {
7980
id: string;
80-
asset: TransactionAssetMap<TransactionOperations.TRANSFER>;
81+
asset: TransactionAssetMap<TransactionOperations.TRANSFER, { id: string }>;
8182
operation: TransactionOperations.TRANSFER;
8283
}
8384

@@ -96,22 +97,22 @@ interface TxTemplate {
9697
version: '2.0';
9798
}
9899

99-
declare type DelegateSignFunction = (
100+
export type DelegateSignFunction = (
100101
serializedTransaction: string,
101102
input: TransactionInput,
102103
index?: number
103104
) => string;
104105

105-
declare type DelegateSignFunctionAsync = (
106+
export type DelegateSignFunctionAsync = (
106107
serializedTransaction: string,
107108
input: TransactionInput,
108109
index?: number
109110
) => Promise<string>;
110111

111112
export default class Transaction {
112-
static serializeTransactionIntoCanonicalString<O = TransactionOperations>(
113-
transaction: TransactionCommon<O>
114-
): string;
113+
static serializeTransactionIntoCanonicalString<
114+
O extends TransactionOperations = TransactionOperations
115+
>(transaction: TransactionCommon<O>): string;
115116

116117
static serializeTransactionIntoCanonicalString(
117118
transaction: CreateTransaction | TransferTransaction
@@ -185,7 +186,7 @@ export default class Transaction {
185186
static makeTransactionTemplate(): TxTemplate;
186187

187188
static makeTransaction<
188-
O extends keyof TransactionOperations,
189+
O extends TransactionOperations,
189190
A = Record<string, any>,
190191
M = Record<string, any>
191192
>(
@@ -212,18 +213,23 @@ export default class Transaction {
212213
metadata: M
213214
): TransferTransaction<M>;
214215

215-
static signTransaction<O = TransactionOperations.CREATE>(
216+
static signTransaction<
217+
O extends TransactionOperations = TransactionOperations.CREATE
218+
>(
216219
transaction: TransactionCommon<O>,
217220
...privateKeys: string[]
218221
): TransactionCommonSigned<O>;
219222

220-
221-
static delegateSignTransaction<O = TransactionOperations.CREATE>(
223+
static delegateSignTransaction<
224+
O extends TransactionOperations = TransactionOperations.CREATE
225+
>(
222226
transaction: TransactionCommon<O>,
223227
signFn: DelegateSignFunction
224228
): TransactionCommonSigned<O>;
225229

226-
static delegateSignTransactionAsync<O = TransactionOperations.CREATE>(
230+
static delegateSignTransactionAsync<
231+
O extends TransactionOperations = TransactionOperations.CREATE
232+
>(
227233
transaction: TransactionCommon<O>,
228234
signFn: DelegateSignFunctionAsync
229235
): Promise<TransactionCommonSigned<O>>;

0 commit comments

Comments
 (0)