import { prepareSignBytes } from './utils' export type ExecDataRepresentation = { origin: string name: string args: { [key: string]: { args: Data } } } export type ExecDataRepresentationWithRouterExec = { router_exec: { origin: string; name: string; args: { [key: string]: { args: Data }; }; }; }; export const dataToExecData = ( data: T, execParams: { origin: string name: string action: string }, ): ExecDataRepresentation => { return { origin: execParams.origin, name: execParams.name, args: { [execParams.action]: { args: data, }, }, } } export const dataToExecDataWithRouterExec = ( data: T, execParams: { origin: string; name: string; action: string; } ): ExecDataRepresentationWithRouterExec => { return { router_exec: { origin: execParams.origin, name: execParams.name, args: { [execParams.action]: { args: data, }, }, }, }; }; export abstract class ExecArgsBase { params: Params constructor(params: Params) { this.params = params } public abstract toData(): DataRepresentation public abstract toExecData(): ExecDataRepresentation public toJSON(): string { return JSON.stringify(prepareSignBytes(this.toData())) } public toExecJSON(): string { return JSON.stringify(prepareSignBytes(this.toExecData())) } }