diff --git a/types/transaction.d.ts b/types/transaction.d.ts index 7d1c9bc..0984678 100644 --- a/types/transaction.d.ts +++ b/types/transaction.d.ts @@ -33,9 +33,9 @@ export enum TransactionOperations { } export interface TransactionCommon< - O = TransactionOperations, - A = Record, - M = Record + O extends TransactionOperations = TransactionOperations.CREATE, + A extends Record = Record, + M extends Record = Record > { id?: string; inputs: TransactionInput[]; @@ -47,16 +47,16 @@ export interface TransactionCommon< } export interface TransactionCommonSigned< - O = TransactionOperations, - A = Record, - M = Record + O extends TransactionOperations = TransactionOperations.CREATE, + A extends Record = Record, + M extends Record = Record > extends Omit, 'id'> { id: string; } export type TransactionAssetMap< Operation, - A = Record + A extends Record > = Operation extends TransactionOperations.CREATE ? { data: A; @@ -66,18 +66,19 @@ export type TransactionAssetMap< }; export interface CreateTransaction< - A = Record, - M = Record + A extends Record = Record, + M extends Record = Record > extends TransactionCommon { id: string; asset: TransactionAssetMap; operation: TransactionOperations.CREATE; } -export interface TransferTransaction> - extends TransactionCommon { +export interface TransferTransaction< + M extends Record = Record +> extends TransactionCommon { id: string; - asset: TransactionAssetMap; + asset: TransactionAssetMap; operation: TransactionOperations.TRANSFER; } @@ -96,22 +97,22 @@ interface TxTemplate { version: '2.0'; } -declare type DelegateSignFunction = ( +export type DelegateSignFunction = ( serializedTransaction: string, input: TransactionInput, index?: number ) => string; -declare type DelegateSignFunctionAsync = ( +export type DelegateSignFunctionAsync = ( serializedTransaction: string, input: TransactionInput, index?: number ) => Promise; export default class Transaction { - static serializeTransactionIntoCanonicalString( - transaction: TransactionCommon - ): string; + static serializeTransactionIntoCanonicalString< + O extends TransactionOperations = TransactionOperations + >(transaction: TransactionCommon): string; static serializeTransactionIntoCanonicalString( transaction: CreateTransaction | TransferTransaction @@ -185,7 +186,7 @@ export default class Transaction { static makeTransactionTemplate(): TxTemplate; static makeTransaction< - O extends keyof TransactionOperations, + O extends TransactionOperations, A = Record, M = Record >( @@ -212,18 +213,23 @@ export default class Transaction { metadata: M ): TransferTransaction; - static signTransaction( + static signTransaction< + O extends TransactionOperations = TransactionOperations.CREATE + >( transaction: TransactionCommon, ...privateKeys: string[] ): TransactionCommonSigned; - - static delegateSignTransaction( + static delegateSignTransaction< + O extends TransactionOperations = TransactionOperations.CREATE + >( transaction: TransactionCommon, signFn: DelegateSignFunction ): TransactionCommonSigned; - static delegateSignTransactionAsync( + static delegateSignTransactionAsync< + O extends TransactionOperations = TransactionOperations.CREATE + >( transaction: TransactionCommon, signFn: DelegateSignFunctionAsync ): Promise>;