@novasamatech/host-api 0.5.0-8 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +103 -1
  2. package/dist/constants.d.ts +2 -0
  3. package/dist/constants.js +2 -0
  4. package/dist/helpers.d.ts +33 -0
  5. package/dist/helpers.js +46 -0
  6. package/dist/hostApi.d.ts +31 -0
  7. package/dist/hostApi.js +345 -0
  8. package/dist/index.d.ts +18 -6
  9. package/dist/index.js +14 -5
  10. package/dist/protocol/commonCodecs.d.ts +42 -0
  11. package/dist/protocol/commonCodecs.js +64 -0
  12. package/dist/protocol/commonCodecs.spec.d.ts +1 -0
  13. package/dist/protocol/commonCodecs.spec.js +72 -0
  14. package/dist/protocol/impl.d.ts +93 -0
  15. package/dist/protocol/impl.js +97 -0
  16. package/dist/protocol/messageCodec.d.ts +1245 -0
  17. package/dist/protocol/messageCodec.js +24 -0
  18. package/dist/protocol/types.d.ts +1 -0
  19. package/dist/protocol/types.js +1 -0
  20. package/dist/protocol/v1/accounts.d.ts +265 -0
  21. package/dist/protocol/v1/accounts.js +51 -0
  22. package/dist/protocol/v1/chat.d.ts +341 -0
  23. package/dist/protocol/v1/chat.js +71 -0
  24. package/dist/protocol/v1/createTransaction.d.ts +238 -0
  25. package/dist/protocol/v1/createTransaction.js +58 -0
  26. package/dist/protocol/v1/feature.d.ts +15 -0
  27. package/dist/protocol/v1/feature.js +7 -0
  28. package/dist/protocol/v1/handshake.d.ts +85 -0
  29. package/dist/protocol/v1/handshake.js +12 -0
  30. package/dist/protocol/v1/jsonRpc.d.ts +10 -0
  31. package/dist/protocol/v1/jsonRpc.js +6 -0
  32. package/dist/protocol/v1/permission.d.ts +90 -0
  33. package/dist/protocol/v1/permission.js +18 -0
  34. package/dist/protocol/v1/sign.d.ts +152 -0
  35. package/dist/protocol/v1/sign.js +43 -0
  36. package/dist/protocol/v1/statementStore.d.ts +175 -0
  37. package/dist/protocol/v1/statementStore.js +47 -0
  38. package/dist/protocol/v1/storage.d.ts +87 -0
  39. package/dist/protocol/v1/storage.js +16 -0
  40. package/dist/provider.d.ts +8 -0
  41. package/dist/provider.js +1 -0
  42. package/dist/transport.d.ts +3 -0
  43. package/dist/transport.js +248 -0
  44. package/dist/types.d.ts +15 -15
  45. package/package.json +3 -5
  46. package/dist/commonEncoders.d.ts +0 -9
  47. package/dist/commonEncoders.js +0 -14
  48. package/dist/createTransport.d.ts +0 -6
  49. package/dist/createTransport.js +0 -183
  50. package/dist/createTransportEncoder.d.ts +0 -7
  51. package/dist/createTransportEncoder.js +0 -5
  52. package/dist/interactions/accounts.d.ts +0 -12
  53. package/dist/interactions/accounts.js +0 -39
  54. package/dist/interactions/features.d.ts +0 -13
  55. package/dist/interactions/features.js +0 -13
  56. package/dist/interactions/handshake.d.ts +0 -2
  57. package/dist/interactions/handshake.js +0 -3
  58. package/dist/interactions/papiProvider.d.ts +0 -8
  59. package/dist/interactions/papiProvider.js +0 -9
  60. package/dist/interactions/sign.d.ts +0 -101
  61. package/dist/interactions/sign.js +0 -169
  62. package/dist/messageEncoder.d.ts +0 -217
  63. package/dist/messageEncoder.js +0 -37
@@ -0,0 +1,42 @@
1
+ import type { Codec, CodecType, StringRecord } from 'scale-ts';
2
+ type FilterStringRecord<T extends Record<string, Codec<any>>> = T extends StringRecord<Codec<any>> ? T : never;
3
+ export type EnumCodec<T extends Record<string, Codec<any>>> = ReturnType<typeof Enum<T>>;
4
+ export declare const Enum: <T extends Record<string, Codec<any>>>(inner: T) => Codec<(FilterStringRecord<T> extends infer T_1 extends StringRecord<Codec<any>> ? { [K in keyof T_1]: {
5
+ tag: K;
6
+ value: CodecType<T_1[K]>;
7
+ }; } : never)[keyof FilterStringRecord<T>]>;
8
+ /**
9
+ * Enum without values
10
+ */
11
+ export declare function Status<T extends string>(...list: T[]): Codec<T>;
12
+ export declare function Nullable<T>(inner: Codec<T>): Codec<T | null>;
13
+ type Constructor<A extends Array<any>, T> = new (...args: A) => T;
14
+ type CodecError<T, Name extends string> = Error & {
15
+ name: Name;
16
+ className: string;
17
+ payload: T;
18
+ };
19
+ type CodecErrorConstructor<T, Name extends string> = Constructor<T extends undefined ? [void] : [T], CodecError<T, Name>>;
20
+ export type ErrCodec<T, Name extends string> = Codec<CodecError<T, Name>> & CodecErrorConstructor<T, Name>;
21
+ export declare function Err<const T, const Name extends string>(name: Name, value: Codec<T>, message: string | ((value: NoInfer<T>) => string), className?: string): ErrCodec<T, Name>;
22
+ type MapErrEnum<Name extends string, T extends Record<string, ErrEnumArguments<any>>> = {
23
+ [K in keyof T]: ErrCodec<CodecType<T[K][0]>, K extends string ? `${Name}::${K}` : Name>;
24
+ };
25
+ type ErrEnumInput<Name extends string, T extends Record<string, ErrEnumArguments<any>>> = {
26
+ [K in keyof T]: CodecError<CodecType<T[K][0]>, K extends string ? `${Name}::${K}` : Name>;
27
+ }[keyof T];
28
+ type ErrEnumArguments<T> = [value: Codec<T>, message: string | ((value: T) => string)];
29
+ export declare function ErrEnum<const Name extends string, const T extends Record<string, ErrEnumArguments<any>>>(name: Name, inner: T): Codec<ErrEnumInput<Name, T>> & MapErrEnum<Name, T>;
30
+ /**
31
+ * Wrapper around Bytes codec. Every usage of Hex codec should be threaded as raw Bytes with mapping to hex string.
32
+ * @param [length] Optional, corresponds to byte array size, not the length of hex string.
33
+ */
34
+ export declare const Hex: (length?: number) => Codec<`0x${string}`>;
35
+ export declare const GenesisHash: Codec<`0x${string}`>;
36
+ export declare const GenericErr: Codec<{
37
+ reason: string;
38
+ }>;
39
+ export declare const GenericError: ErrCodec<{
40
+ reason: string;
41
+ }, "GenericError">;
42
+ export {};
@@ -0,0 +1,64 @@
1
+ import { Bytes, Enum as ScaleEnum, Option, Struct, _void, enhanceCodec, str, u8 } from 'scale-ts';
2
+ import { fromHex, toHex } from '../helpers.js';
3
+ export const Enum = (inner) => ScaleEnum(inner);
4
+ /**
5
+ * Enum without values
6
+ */
7
+ export function Status(...list) {
8
+ return enhanceCodec(u8, v => {
9
+ const i = list.indexOf(v);
10
+ if (i === -1) {
11
+ throw new Error(`Unknown status value: ${v}`);
12
+ }
13
+ return i;
14
+ }, i => {
15
+ const v = list.at(i);
16
+ if (v === undefined) {
17
+ throw new Error(`Unknown status index: ${i}`);
18
+ }
19
+ return v;
20
+ });
21
+ }
22
+ export function Nullable(inner) {
23
+ return enhanceCodec(Option(inner), v => (v === null ? undefined : v), v => (v === undefined ? null : v));
24
+ }
25
+ export function Err(name, value, message, className = name) {
26
+ // Defining class with dynamic name
27
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
28
+ const C = {
29
+ [className]: class extends Error {
30
+ className = className;
31
+ name = name;
32
+ payload;
33
+ constructor(data) {
34
+ super(typeof message === 'function' ? message(data) : message);
35
+ this.payload = data;
36
+ }
37
+ // workaround for codec array destructuring
38
+ static [Symbol.iterator]() {
39
+ return errorCodec[Symbol.iterator]();
40
+ }
41
+ },
42
+ }[className];
43
+ const errorCodec = enhanceCodec(value, v => v.payload,
44
+ // @ts-expect-error don't want to fix it really
45
+ v => new C(v));
46
+ return Object.assign(C, errorCodec);
47
+ }
48
+ export function ErrEnum(name, inner) {
49
+ const values = Object.fromEntries(Object.entries(inner).map(([k, [value, message]]) => {
50
+ return [k, Err(`${name}::${k}`, value, message, k)];
51
+ }));
52
+ const codec = enhanceCodec(Enum(values), v => ({ tag: v.className, value: v }), v => v.value);
53
+ return Object.assign(codec, values);
54
+ }
55
+ /**
56
+ * Wrapper around Bytes codec. Every usage of Hex codec should be threaded as raw Bytes with mapping to hex string.
57
+ * @param [length] Optional, corresponds to byte array size, not the length of hex string.
58
+ */
59
+ export const Hex = (length) => enhanceCodec(Bytes(length), fromHex, toHex);
60
+ export const GenesisHash = Hex();
61
+ export const GenericErr = Struct({
62
+ reason: str,
63
+ });
64
+ export const GenericError = Err('GenericError', GenericErr, ({ reason }) => `Unknown error: ${reason}`);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,72 @@
1
+ import { Struct, _void, bool } from 'scale-ts';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { Err, ErrEnum, Hex, Status } from './commonCodecs.js';
4
+ describe('Common codecs', () => {
5
+ describe('Hex', () => {
6
+ it('should correctly encode/decode Hex with arbitrary length', () => {
7
+ const hex = '0xffffff';
8
+ const codec = Hex();
9
+ expect(codec.enc(hex)).toEqual(new Uint8Array([12, 255, 255, 255]));
10
+ expect(codec.dec(codec.enc(hex))).toEqual(hex);
11
+ });
12
+ it('should correctly encode/decode Hex with fixed length', () => {
13
+ const hex = '0xffffff';
14
+ const codec = Hex(3);
15
+ expect(codec.enc(hex)).toEqual(new Uint8Array([255, 255, 255]));
16
+ expect(codec.dec(codec.enc(hex))).toEqual(hex);
17
+ });
18
+ });
19
+ describe('Status', () => {
20
+ it('should correctly encode/decode Status', () => {
21
+ const codec = Status('New', 'Used');
22
+ expect(codec.enc('New')).toEqual(new Uint8Array([0]));
23
+ expect(codec.enc('Used')).toEqual(new Uint8Array([1]));
24
+ expect(codec.dec('0x00')).toEqual('New');
25
+ expect(codec.dec('0x01')).toEqual('Used');
26
+ // @ts-expect-error for test
27
+ expect(() => codec.enc('Unknown')).toThrowErrorMatchingInlineSnapshot(`[Error: Unknown status value: Unknown]`);
28
+ expect(() => codec.dec('0x03')).toThrowErrorMatchingInlineSnapshot(`[Error: Unknown status index: 3]`);
29
+ });
30
+ });
31
+ describe('Err', () => {
32
+ it('should correctly construct Error', () => {
33
+ const ErrorCodec = Err('TestError', _void, 'Test message');
34
+ const error = new ErrorCodec(undefined);
35
+ expect(error).toBeInstanceOf(ErrorCodec);
36
+ expect(error.name).toBe('TestError');
37
+ expect(error.message).toBe('Test message');
38
+ });
39
+ it('should correctly encode/decode Err', () => {
40
+ const payload = Struct({ enable: bool });
41
+ const ErrorCodec = Err('TestError', payload, 'Test message');
42
+ const error = new ErrorCodec({ enable: true });
43
+ expect(ErrorCodec.enc(error)).toEqual(new Uint8Array([1]));
44
+ expect(ErrorCodec.dec(ErrorCodec.enc(error))).toEqual(new ErrorCodec({ enable: true }));
45
+ });
46
+ });
47
+ describe('ErrEnum', () => {
48
+ it('should correctly construct ErrorEnum field', () => {
49
+ const ErrorCodec = ErrEnum('ErrorCodec', {
50
+ TestError: [_void, 'Test message'],
51
+ });
52
+ const error = new ErrorCodec.TestError(undefined);
53
+ expect(error).toBeInstanceOf(ErrorCodec.TestError);
54
+ expect(error.name).toBe('ErrorCodec::TestError');
55
+ expect(error.message).toBe('Test message');
56
+ });
57
+ it('should correctly serialize/deserialize', () => {
58
+ const ErrorCodec = ErrEnum('ErrorCodec', {
59
+ First: [_void, 'First'],
60
+ Second: [_void, 'Second'],
61
+ });
62
+ const first = new ErrorCodec.First(undefined);
63
+ const second = new ErrorCodec.Second(undefined);
64
+ expect(ErrorCodec.enc(first)).toEqual(new Uint8Array([0]));
65
+ expect(ErrorCodec.enc(second)).toEqual(new Uint8Array([1]));
66
+ expect(ErrorCodec.dec(ErrorCodec.enc(first))).toEqual(first);
67
+ expect(ErrorCodec.dec(ErrorCodec.enc(second))).toEqual(second);
68
+ expect(ErrorCodec.dec(ErrorCodec.enc(first))).not.toEqual(second);
69
+ expect(ErrorCodec.dec(ErrorCodec.enc(second))).not.toEqual(first);
70
+ });
71
+ });
72
+ });
@@ -0,0 +1,93 @@
1
+ import type { Codec } from 'scale-ts';
2
+ import type { EnumCodec } from './commonCodecs.js';
3
+ import { AccountCreateProofV1_request, AccountCreateProofV1_response, AccountGetAliasV1_request, AccountGetAliasV1_response, AccountGetV1_request, AccountGetV1_response, GetNonProductAccountsV1_request, GetNonProductAccountsV1_response } from './v1/accounts.js';
4
+ import { ChatActionSubscribeV1_receive, ChatActionSubscribeV1_start, ChatCreateContactV1_request, ChatCreateContactV1_response, ChatPostMessageV1_request, ChatPostMessageV1_response } from './v1/chat.js';
5
+ import { CreateTransactionV1_request, CreateTransactionV1_response, CreateTransactionWithNonProductAccountV1_request, CreateTransactionWithNonProductAccountV1_response } from './v1/createTransaction.js';
6
+ import { FeatureV1_request, FeatureV1_response } from './v1/feature.js';
7
+ import { HandshakeV1_request, HandshakeV1_response } from './v1/handshake.js';
8
+ import { JsonRpcMessageSendV1_request, JsonRpcMessageSendV1_response, JsonRpcMessageSubscribeV1_receive, JsonRpcMessageSubscribeV1_start } from './v1/jsonRpc.js';
9
+ import { PermissionRequestV1_request, PermissionRequestV1_response } from './v1/permission.js';
10
+ import { SignPayloadV1_request, SignPayloadV1_response, SignRawV1_request, SignRawV1_response } from './v1/sign.js';
11
+ import { StatementStoreCreateProofV1_request, StatementStoreCreateProofV1_response } from './v1/statementStore.js';
12
+ import { StorageClearV1_request, StorageClearV1_response, StorageReadV1_request, StorageReadV1_response, StorageWriteV1_request, StorageWriteV1_response } from './v1/storage.js';
13
+ export type VersionedArguments = Record<string, [Codec<any>, Codec<any>]>;
14
+ type InferVersionedArgument<EnumValues extends VersionedArguments, N extends number> = {
15
+ [V in keyof EnumValues]: EnumValues[V][N];
16
+ };
17
+ export type VersionedProtocolRequest<T extends VersionedArguments = VersionedArguments> = {
18
+ type: 'request';
19
+ request: EnumCodec<InferVersionedArgument<T, 0>>;
20
+ response: EnumCodec<InferVersionedArgument<T, 1>>;
21
+ };
22
+ export type VersionedProtocolSubscription<T extends VersionedArguments = VersionedArguments> = {
23
+ type: 'subscription';
24
+ start: EnumCodec<InferVersionedArgument<T, 0>>;
25
+ receive: EnumCodec<InferVersionedArgument<T, 1>>;
26
+ };
27
+ export type HostApiProtocol = {
28
+ handshake: VersionedProtocolRequest<{
29
+ v1: [typeof HandshakeV1_request, typeof HandshakeV1_response];
30
+ }>;
31
+ feature: VersionedProtocolRequest<{
32
+ v1: [typeof FeatureV1_request, typeof FeatureV1_response];
33
+ }>;
34
+ permission_request: VersionedProtocolRequest<{
35
+ v1: [typeof PermissionRequestV1_request, typeof PermissionRequestV1_response];
36
+ }>;
37
+ storage_read: VersionedProtocolRequest<{
38
+ v1: [typeof StorageReadV1_request, typeof StorageReadV1_response];
39
+ }>;
40
+ storage_write: VersionedProtocolRequest<{
41
+ v1: [typeof StorageWriteV1_request, typeof StorageWriteV1_response];
42
+ }>;
43
+ storage_clear: VersionedProtocolRequest<{
44
+ v1: [typeof StorageClearV1_request, typeof StorageClearV1_response];
45
+ }>;
46
+ account_get: VersionedProtocolRequest<{
47
+ v1: [typeof AccountGetV1_request, typeof AccountGetV1_response];
48
+ }>;
49
+ account_get_alias: VersionedProtocolRequest<{
50
+ v1: [typeof AccountGetAliasV1_request, typeof AccountGetAliasV1_response];
51
+ }>;
52
+ account_create_proof: VersionedProtocolRequest<{
53
+ v1: [typeof AccountCreateProofV1_request, typeof AccountCreateProofV1_response];
54
+ }>;
55
+ get_non_product_accounts: VersionedProtocolRequest<{
56
+ v1: [typeof GetNonProductAccountsV1_request, typeof GetNonProductAccountsV1_response];
57
+ }>;
58
+ create_transaction: VersionedProtocolRequest<{
59
+ v1: [typeof CreateTransactionV1_request, typeof CreateTransactionV1_response];
60
+ }>;
61
+ create_transaction_with_non_product_account: VersionedProtocolRequest<{
62
+ v1: [
63
+ typeof CreateTransactionWithNonProductAccountV1_request,
64
+ typeof CreateTransactionWithNonProductAccountV1_response
65
+ ];
66
+ }>;
67
+ sign_raw: VersionedProtocolRequest<{
68
+ v1: [typeof SignRawV1_request, typeof SignRawV1_response];
69
+ }>;
70
+ sign_payload: VersionedProtocolRequest<{
71
+ v1: [typeof SignPayloadV1_request, typeof SignPayloadV1_response];
72
+ }>;
73
+ chat_create_contact: VersionedProtocolRequest<{
74
+ v1: [typeof ChatCreateContactV1_request, typeof ChatCreateContactV1_response];
75
+ }>;
76
+ chat_post_message: VersionedProtocolRequest<{
77
+ v1: [typeof ChatPostMessageV1_request, typeof ChatPostMessageV1_response];
78
+ }>;
79
+ chat_action_subscribe: VersionedProtocolSubscription<{
80
+ v1: [typeof ChatActionSubscribeV1_start, typeof ChatActionSubscribeV1_receive];
81
+ }>;
82
+ statement_store_create_proof: VersionedProtocolRequest<{
83
+ v1: [typeof StatementStoreCreateProofV1_request, typeof StatementStoreCreateProofV1_response];
84
+ }>;
85
+ jsonrpc_message_send: VersionedProtocolRequest<{
86
+ v1: [typeof JsonRpcMessageSendV1_request, typeof JsonRpcMessageSendV1_response];
87
+ }>;
88
+ jsonrpc_message_subscribe: VersionedProtocolSubscription<{
89
+ v1: [typeof JsonRpcMessageSubscribeV1_start, typeof JsonRpcMessageSubscribeV1_receive];
90
+ }>;
91
+ };
92
+ export declare const hostApiProtocol: HostApiProtocol;
93
+ export {};
@@ -0,0 +1,97 @@
1
+ import { Enum } from './commonCodecs.js';
2
+ import { AccountCreateProofV1_request, AccountCreateProofV1_response, AccountGetAliasV1_request, AccountGetAliasV1_response, AccountGetV1_request, AccountGetV1_response, GetNonProductAccountsV1_request, GetNonProductAccountsV1_response, } from './v1/accounts.js';
3
+ import { ChatActionSubscribeV1_receive, ChatActionSubscribeV1_start, ChatCreateContactV1_request, ChatCreateContactV1_response, ChatPostMessageV1_request, ChatPostMessageV1_response, } from './v1/chat.js';
4
+ import { CreateTransactionV1_request, CreateTransactionV1_response, CreateTransactionWithNonProductAccountV1_request, CreateTransactionWithNonProductAccountV1_response, } from './v1/createTransaction.js';
5
+ import { FeatureV1_request, FeatureV1_response } from './v1/feature.js';
6
+ import { HandshakeV1_request, HandshakeV1_response } from './v1/handshake.js';
7
+ import { JsonRpcMessageSendV1_request, JsonRpcMessageSendV1_response, JsonRpcMessageSubscribeV1_receive, JsonRpcMessageSubscribeV1_start, } from './v1/jsonRpc.js';
8
+ import { PermissionRequestV1_request, PermissionRequestV1_response } from './v1/permission.js';
9
+ import { SignPayloadV1_request, SignPayloadV1_response, SignRawV1_request, SignRawV1_response } from './v1/sign.js';
10
+ import { StatementStoreCreateProofV1_request, StatementStoreCreateProofV1_response } from './v1/statementStore.js';
11
+ import { StorageClearV1_request, StorageClearV1_response, StorageReadV1_request, StorageReadV1_response, StorageWriteV1_request, StorageWriteV1_response, } from './v1/storage.js';
12
+ const enumFromArg = (enumValues, n) => {
13
+ return Enum(Object.fromEntries(Object.entries(enumValues).map(([key, value]) => [key, value[n]])));
14
+ };
15
+ const versionedRequest = (values) => {
16
+ return {
17
+ type: 'request',
18
+ request: enumFromArg(values, 0),
19
+ response: enumFromArg(values, 1),
20
+ };
21
+ };
22
+ const versionedSubscription = (values) => {
23
+ return {
24
+ type: 'subscription',
25
+ start: enumFromArg(values, 0),
26
+ receive: enumFromArg(values, 1),
27
+ };
28
+ };
29
+ export const hostApiProtocol = {
30
+ // host requests
31
+ handshake: versionedRequest({
32
+ v1: [HandshakeV1_request, HandshakeV1_response],
33
+ }),
34
+ feature: versionedRequest({
35
+ v1: [FeatureV1_request, FeatureV1_response],
36
+ }),
37
+ permission_request: versionedRequest({
38
+ v1: [PermissionRequestV1_request, PermissionRequestV1_response],
39
+ }),
40
+ // storage
41
+ storage_read: versionedRequest({
42
+ v1: [StorageReadV1_request, StorageReadV1_response],
43
+ }),
44
+ storage_write: versionedRequest({
45
+ v1: [StorageWriteV1_request, StorageWriteV1_response],
46
+ }),
47
+ storage_clear: versionedRequest({
48
+ v1: [StorageClearV1_request, StorageClearV1_response],
49
+ }),
50
+ // accounts
51
+ account_get: versionedRequest({
52
+ v1: [AccountGetV1_request, AccountGetV1_response],
53
+ }),
54
+ account_get_alias: versionedRequest({
55
+ v1: [AccountGetAliasV1_request, AccountGetAliasV1_response],
56
+ }),
57
+ account_create_proof: versionedRequest({
58
+ v1: [AccountCreateProofV1_request, AccountCreateProofV1_response],
59
+ }),
60
+ get_non_product_accounts: versionedRequest({
61
+ v1: [GetNonProductAccountsV1_request, GetNonProductAccountsV1_response],
62
+ }),
63
+ // signing
64
+ create_transaction: versionedRequest({
65
+ v1: [CreateTransactionV1_request, CreateTransactionV1_response],
66
+ }),
67
+ create_transaction_with_non_product_account: versionedRequest({
68
+ v1: [CreateTransactionWithNonProductAccountV1_request, CreateTransactionWithNonProductAccountV1_response],
69
+ }),
70
+ sign_raw: versionedRequest({
71
+ v1: [SignRawV1_request, SignRawV1_response],
72
+ }),
73
+ sign_payload: versionedRequest({
74
+ v1: [SignPayloadV1_request, SignPayloadV1_response],
75
+ }),
76
+ // chat
77
+ chat_create_contact: versionedRequest({
78
+ v1: [ChatCreateContactV1_request, ChatCreateContactV1_response],
79
+ }),
80
+ chat_post_message: versionedRequest({
81
+ v1: [ChatPostMessageV1_request, ChatPostMessageV1_response],
82
+ }),
83
+ chat_action_subscribe: versionedSubscription({
84
+ v1: [ChatActionSubscribeV1_start, ChatActionSubscribeV1_receive],
85
+ }),
86
+ // statement store
87
+ statement_store_create_proof: versionedRequest({
88
+ v1: [StatementStoreCreateProofV1_request, StatementStoreCreateProofV1_response],
89
+ }),
90
+ // json rpc
91
+ jsonrpc_message_send: versionedRequest({
92
+ v1: [JsonRpcMessageSendV1_request, JsonRpcMessageSendV1_response],
93
+ }),
94
+ jsonrpc_message_subscribe: versionedSubscription({
95
+ v1: [JsonRpcMessageSubscribeV1_start, JsonRpcMessageSubscribeV1_receive],
96
+ }),
97
+ };