// Copyright © Aptos // SPDX-License-Identifier: Apache-2.0 import { Deserializer, Serializer } from '@aptos-labs/ts-sdk'; import { DeserializeFn, SerializeFn } from './helpers'; export interface UserApproval { args: TApprovalArgs; status: 'approved'; } export interface UserDismissal { status: 'dismissed'; } export type UserResponse = | UserApproval | UserDismissal; export function makeUserApproval( args: TApprovalArgs, ): UserApproval { return { args, status: 'approved' }; } export function makeUserResponseSerializeFn( serializeArgs: SerializeFn, ): SerializeFn> { return (serializer: Serializer, value: UserResponse) => { serializer.serializeBool(value.status === 'approved'); if (value.status === 'approved') { serializeArgs(serializer, value.args); } }; } export function makeUserResponseDeserializeFn( deserializeArgs: DeserializeFn, ): DeserializeFn> { return (deserializer: Deserializer) => { const isApproved = deserializer.deserializeBool(); return isApproved ? { args: deserializeArgs(deserializer), status: 'approved' } : { status: 'dismissed' }; }; }