index.ts
1 import { 2 EnclaveMethods, 3 EnclaveMethodParams, 4 GetChainCodeParams, 5 GetChainCodeResponse, 6 SignTransactionParams, 7 SignTransactionResponse, 8 SignMessageParams, 9 SignMessageResponse, 10 DisplayAddressParams, 11 DisplayAddressResponse 12 } from 'shared/enclave/types'; 13 import { makeRequest } from './requests'; 14 15 function makeMethod<ParamsType extends EnclaveMethodParams, ResponseType>(method: EnclaveMethods) { 16 return (params: ParamsType) => makeRequest<ResponseType>(method, params); 17 } 18 19 export class EnclaveAPIClass { 20 public getChainCode = makeMethod<GetChainCodeParams, GetChainCodeResponse>( 21 EnclaveMethods.GET_CHAIN_CODE 22 ); 23 public signTransaction = makeMethod<SignTransactionParams, SignTransactionResponse>( 24 EnclaveMethods.SIGN_TRANSACTION 25 ); 26 public signMessage = makeMethod<SignMessageParams, SignMessageResponse>( 27 EnclaveMethods.SIGN_MESSAGE 28 ); 29 public displayAddress = makeMethod<DisplayAddressParams, DisplayAddressResponse>( 30 EnclaveMethods.DISPLAY_ADDRESS 31 ); 32 } 33 34 export default new EnclaveAPIClass(); 35 export * from 'shared/enclave/types';