The input actor is the actor generated by the dfx generate command and imported from the declarations folder. Here’s the generated idlFactory of used by the actor:
export const idlFactory = ({ IDL }) => {
const ClientPrincipal = IDL.Principal;
const ClientKey = IDL.Record({
'client_principal' : ClientPrincipal,
'client_nonce' : IDL.Nat64,
});
const CanisterWsCloseArguments = IDL.Record({ 'client_key' : ClientKey });
const CanisterWsCloseResult = IDL.Variant({
'Ok' : IDL.Null,
'Err' : IDL.Text,
});
const CanisterWsGetMessagesArguments = IDL.Record({ 'nonce' : IDL.Nat64 });
const CanisterOutputMessage = IDL.Record({
'key' : IDL.Text,
'content' : IDL.Vec(IDL.Nat8),
'client_key' : ClientKey,
});
const CanisterOutputCertifiedMessages = IDL.Record({
'messages' : IDL.Vec(CanisterOutputMessage),
'cert' : IDL.Vec(IDL.Nat8),
'tree' : IDL.Vec(IDL.Nat8),
});
const CanisterWsGetMessagesResult = IDL.Variant({
'Ok' : CanisterOutputCertifiedMessages,
'Err' : IDL.Text,
});
const WebsocketMessage = IDL.Record({
'sequence_num' : IDL.Nat64,
'content' : IDL.Vec(IDL.Nat8),
'client_key' : ClientKey,
'timestamp' : IDL.Nat64,
'is_service_message' : IDL.Bool,
});
const CanisterWsMessageArguments = IDL.Record({ 'msg' : WebsocketMessage });
const AppMessage = IDL.Record({ 'text' : IDL.Text, 'timestamp' : IDL.Nat64 });
const CanisterWsMessageResult = IDL.Variant({
'Ok' : IDL.Null,
'Err' : IDL.Text,
});
const CanisterWsOpenArguments = IDL.Record({ 'client_nonce' : IDL.Nat64 });
const CanisterWsOpenResult = IDL.Variant({
'Ok' : IDL.Null,
'Err' : IDL.Text,
});
return IDL.Service({
'ws_close' : IDL.Func(
[CanisterWsCloseArguments],
[CanisterWsCloseResult],
[],
),
'ws_get_messages' : IDL.Func(
[CanisterWsGetMessagesArguments],
[CanisterWsGetMessagesResult],
['query'],
),
'ws_message' : IDL.Func(
[CanisterWsMessageArguments, IDL.Opt(AppMessage)],
[CanisterWsMessageResult],
[],
),
'ws_open' : IDL.Func([CanisterWsOpenArguments], [CanisterWsOpenResult], []),
});
};
export const init = ({ IDL }) => { return []; };
Here it is:
Also, I didn’t find a clear way to extract the type of an OptClass except from accessing the protected _type field.
