/ shared / enclave / client / index.ts
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';