export type QqbotPluginSendQueueSdk = { sendMessage(input: Record): Promise; }; export type QqbotPluginConfigSdk = { getConfig(key: string): Promise; setConfig(key: string, value: unknown): Promise; }; export type QqbotPluginStorageSdk = { get(key: string): Promise; set(key: string, value: unknown): Promise; }; export type QqbotPluginHttpSdk = { request(input: Record): Promise; }; export type QqbotPluginAssetSdk = { readAsset(assetKey: string): Promise; }; export type QqbotPluginRuntimeEventSdk = { emitRuntimeEvent(input: Record): Promise; }; export type QqbotPluginSdkFactoryInput = { assets: QqbotPluginAssetSdk; config: QqbotPluginConfigSdk; eventContext: Record; events: QqbotPluginRuntimeEventSdk; http: QqbotPluginHttpSdk; operationContext: Record; sendQueue: QqbotPluginSendQueueSdk; storage: QqbotPluginStorageSdk; }; export type QqbotPluginSdk = Readonly; export const createQqbotPluginSdk = ( input: QqbotPluginSdkFactoryInput, ): QqbotPluginSdk => { return Object.freeze({ assets: input.assets, config: input.config, eventContext: Object.freeze({ ...input.eventContext }), events: input.events, http: input.http, operationContext: Object.freeze({ ...input.operationContext }), sendQueue: input.sendQueue, storage: input.storage, }); };