advanced-ussd-builder
Version:
Advanced USSD Menu Builder with persistent state and navigation
61 lines • 2.34 kB
TypeScript
import { iUssdArgs, iUssdMenu, iUssdSession, iUssdBuilder, iUssdResponse, iProviderArgs, iUssdMenuOptions, iPaginateMenuOptions, tUssdProviderResponse, iUssdProviderResponses, tSetCustomSessionQuery } from './types';
export * from './types';
export * from './security';
export * from './proxy-handler';
export declare class UssdMenu {
title: string;
custom_input: boolean;
children: iUssdMenu[];
constructor(title: string, children: iUssdMenu[], custom_input?: boolean);
}
export declare class UssdBuilder implements iUssdBuilder {
private root_menu;
opts: iUssdMenuOptions;
local_session: any;
session: iUssdSession | null;
private raw_args;
raw_headers: any | null;
raw_body: string | null;
private args;
private redis;
private providers;
private session_ttl;
private handlerRegistry;
constructor(opts: iUssdMenuOptions, root_menu: UssdMenu);
private get session_authenticated();
private get from_login();
private get redis_session_key();
get ussd_args(): iUssdArgs;
update_user_input(user_input: string): Promise<void>;
private set_args;
private make_provider_response;
private initialize_session;
private start_session;
private generate_id;
private make_ussd_response;
private generate_invalid_input_response;
private update_session;
private calculate_gsm_7bits_size;
private str_includes_non_gsm_char;
generate_paginated_menu(args: iPaginateMenuOptions): Promise<string | iUssdResponse>;
render_main_menu(user_input?: string): Promise<iUssdResponse>;
private on_forward_index_exceeded;
private on_back_index_exceeded;
private generate_hops;
pipe<T extends keyof iUssdProviderResponses>(args: iProviderArgs[T], callback: (options: tUssdProviderResponse<T>) => void, headers?: Record<string, string>, rawBody?: string): Promise<void>;
private get_menu_by_route;
private process_proxy_continuation;
private process_menu;
private render_menu;
private paginate_text_content;
private split_message_for_pagination;
private format_date_for_timestamp;
/**
*
* @param query
* @description set session in menu handlers
* @returns void
*/
set_session(update?: tSetCustomSessionQuery): Promise<void>;
}
//# sourceMappingURL=index.d.ts.map