@juspay/neurolink 8.38.0 → 8.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +3 -0
- package/dist/core/conversationMemoryFactory.d.ts +2 -2
- package/dist/core/conversationMemoryFactory.js +2 -2
- package/dist/core/conversationMemoryInitializer.d.ts +2 -1
- package/dist/core/conversationMemoryInitializer.js +2 -2
- package/dist/core/redisConversationMemoryManager.d.ts +6 -1
- package/dist/core/redisConversationMemoryManager.js +19 -7
- package/dist/features/ppt/index.d.ts +1 -0
- package/dist/features/ppt/index.js +2 -0
- package/dist/features/ppt/slideGenerator.d.ts +96 -0
- package/dist/features/ppt/slideGenerator.js +376 -0
- package/dist/features/ppt/slideRenderers.d.ts +182 -0
- package/dist/features/ppt/slideRenderers.js +992 -0
- package/dist/features/ppt/types.d.ts +1 -1
- package/dist/lib/core/conversationMemoryFactory.d.ts +2 -2
- package/dist/lib/core/conversationMemoryFactory.js +2 -2
- package/dist/lib/core/conversationMemoryInitializer.d.ts +2 -1
- package/dist/lib/core/conversationMemoryInitializer.js +2 -2
- package/dist/lib/core/redisConversationMemoryManager.d.ts +6 -1
- package/dist/lib/core/redisConversationMemoryManager.js +19 -7
- package/dist/lib/features/ppt/index.d.ts +1 -0
- package/dist/lib/features/ppt/index.js +2 -0
- package/dist/lib/features/ppt/slideGenerator.d.ts +96 -0
- package/dist/lib/features/ppt/slideGenerator.js +377 -0
- package/dist/lib/features/ppt/slideRenderers.d.ts +182 -0
- package/dist/lib/features/ppt/slideRenderers.js +993 -0
- package/dist/lib/features/ppt/types.d.ts +1 -1
- package/dist/lib/neurolink.js +1 -1
- package/dist/lib/types/common.d.ts +1 -0
- package/dist/lib/types/pptTypes.d.ts +217 -0
- package/dist/neurolink.js +1 -1
- package/dist/types/common.d.ts +1 -0
- package/dist/types/pptTypes.d.ts +217 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [8.40.0](https://github.com/juspay/neurolink/compare/v8.39.0...v8.40.0) (2026-01-28)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- **(events):** Emit event when title generation is finished ([aab4a1f](https://github.com/juspay/neurolink/commit/aab4a1f9d336a9b1fa20a5b6196155ab1d8673ed))
|
|
6
|
+
|
|
7
|
+
## [8.39.0](https://github.com/juspay/neurolink/compare/v8.38.0...v8.39.0) (2026-01-27)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- **(ppt):** Implement SlideGenerator() for PPT Gen ([c804e97](https://github.com/juspay/neurolink/commit/c804e97ceda8d90bfc5ee5b976b1a8b3864f86ef))
|
|
12
|
+
|
|
1
13
|
## [8.38.0](https://github.com/juspay/neurolink/compare/v8.37.0...v8.38.0) (2026-01-23)
|
|
2
14
|
|
|
3
15
|
### Features
|
package/README.md
CHANGED
|
@@ -37,10 +37,13 @@ Extracted from production systems at Juspay and battle-tested at enterprise scal
|
|
|
37
37
|
|
|
38
38
|
| Feature | Version | Description | Guide |
|
|
39
39
|
| ---------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
|
|
40
|
+
| **Title Generation Events** | v8.38.0 | Emit `conversation:titleGenerated` event when conversation title is generated. Supports custom title prompts via `NEUROLINK_TITLE_PROMPT`. | [Conversation Memory Guide](docs/conversation-memory.md) |
|
|
40
41
|
| **Video Generation with Veo** | v8.32.0 | Video generation using Veo 3.1 (`veo-3.1`). Realistic video generation with many parameter options | [Video Generation Guide](docs/features/video-generation.md) |
|
|
41
42
|
| **Image Generation with Gemini** | v8.31.0 | Native image generation using Gemini 2.0 Flash Experimental (`imagen-3.0-generate-002`). High-quality image synthesis directly from Google AI. | [Image Generation Guide](docs/image-generation-streaming.md) |
|
|
42
43
|
| **HTTP/Streamable HTTP Transport** | v8.29.0 | Connect to remote MCP servers via HTTP with authentication headers, automatic retry with exponential backoff, and configurable rate limiting. | [HTTP Transport Guide](docs/mcp-http-transport.md) |
|
|
43
44
|
|
|
45
|
+
- **Title Generation Events** – Emit real-time events when conversation titles are auto-generated. Listen to `conversation:titleGenerated` for session tracking. → [Conversation Memory Guide](docs/conversation-memory.md#title-generation-events)
|
|
46
|
+
- **Custom Title Prompts** – Customize conversation title generation with `NEUROLINK_TITLE_PROMPT` environment variable. Use `${userMessage}` placeholder for dynamic prompts. → [Conversation Memory Guide](docs/conversation-memory.md#customizing-the-title-prompt)
|
|
44
47
|
- **Video Generation** – Transform images into 8-second videos with synchronized audio using Google Veo 3.1 via Vertex AI. Supports 720p/1080p resolutions, portrait/landscape aspect ratios. → [Video Generation Guide](docs/features/video-generation.md)
|
|
45
48
|
- **Image Generation** – Generate images from text prompts using Gemini models via Vertex AI or Google AI Studio. Supports streaming mode with automatic file saving. → [Image Generation Guide](docs/IMAGE-GENERATION-STREAMING.md)
|
|
46
49
|
- **HTTP/Streamable HTTP Transport for MCP** – Connect to remote MCP servers via HTTP with authentication headers, retry logic, and rate limiting. → [HTTP Transport Guide](docs/MCP-HTTP-TRANSPORT.md)
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Creates appropriate conversation memory manager based on configuration
|
|
4
4
|
*/
|
|
5
5
|
import type { ConversationMemoryConfig, RedisStorageConfig } from "../types/conversation.js";
|
|
6
|
-
import type { StorageType } from "../types/common.js";
|
|
6
|
+
import type { StorageType, TypedEventEmitter, NeuroLinkEvents } from "../types/common.js";
|
|
7
7
|
import { ConversationMemoryManager } from "./conversationMemoryManager.js";
|
|
8
8
|
import { RedisConversationMemoryManager } from "./redisConversationMemoryManager.js";
|
|
9
9
|
/**
|
|
10
10
|
* Creates a conversation memory manager based on configuration
|
|
11
11
|
*/
|
|
12
|
-
export declare function createConversationMemoryManager(config: ConversationMemoryConfig, storageType?: StorageType, redisConfig?: RedisStorageConfig): ConversationMemoryManager | RedisConversationMemoryManager;
|
|
12
|
+
export declare function createConversationMemoryManager(config: ConversationMemoryConfig, storageType?: StorageType, redisConfig?: RedisStorageConfig, eventEmitter?: TypedEventEmitter<NeuroLinkEvents>): ConversationMemoryManager | RedisConversationMemoryManager;
|
|
13
13
|
/**
|
|
14
14
|
* Get storage type from environment variable or configuration
|
|
15
15
|
*/
|
|
@@ -8,7 +8,7 @@ import { logger } from "../utils/logger.js";
|
|
|
8
8
|
/**
|
|
9
9
|
* Creates a conversation memory manager based on configuration
|
|
10
10
|
*/
|
|
11
|
-
export function createConversationMemoryManager(config, storageType = "memory", redisConfig) {
|
|
11
|
+
export function createConversationMemoryManager(config, storageType = "memory", redisConfig, eventEmitter) {
|
|
12
12
|
logger.debug("[conversationMemoryFactory] Creating conversation memory manager", {
|
|
13
13
|
storageType,
|
|
14
14
|
config: {
|
|
@@ -38,7 +38,7 @@ export function createConversationMemoryManager(config, storageType = "memory",
|
|
|
38
38
|
ttl: redisConfig?.ttl || 86400,
|
|
39
39
|
hasConnectionOptions: !!redisConfig?.connectionOptions,
|
|
40
40
|
});
|
|
41
|
-
const redisManager = new RedisConversationMemoryManager(config, redisConfig);
|
|
41
|
+
const redisManager = new RedisConversationMemoryManager(config, redisConfig, eventEmitter);
|
|
42
42
|
logger.debug("[conversationMemoryFactory] Redis conversation manager created successfully", {
|
|
43
43
|
managerType: redisManager.constructor.name,
|
|
44
44
|
config: {
|
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
import type { ConversationMemoryConfig } from "../types/conversation.js";
|
|
6
6
|
import type { ConversationMemoryManager } from "./conversationMemoryManager.js";
|
|
7
7
|
import type { RedisConversationMemoryManager } from "./redisConversationMemoryManager.js";
|
|
8
|
+
import type { TypedEventEmitter, NeuroLinkEvents } from "../types/common.js";
|
|
8
9
|
/**
|
|
9
10
|
* Initialize conversation memory for NeuroLink
|
|
10
11
|
* This function decides whether to use in-memory or Redis storage
|
|
11
12
|
*/
|
|
12
13
|
export declare function initializeConversationMemory(config?: {
|
|
13
14
|
conversationMemory?: Partial<ConversationMemoryConfig>;
|
|
14
|
-
}): Promise<ConversationMemoryManager | RedisConversationMemoryManager | null>;
|
|
15
|
+
}, eventEmitter?: TypedEventEmitter<NeuroLinkEvents>): Promise<ConversationMemoryManager | RedisConversationMemoryManager | null>;
|
|
@@ -9,7 +9,7 @@ import { logger } from "../utils/logger.js";
|
|
|
9
9
|
* Initialize conversation memory for NeuroLink
|
|
10
10
|
* This function decides whether to use in-memory or Redis storage
|
|
11
11
|
*/
|
|
12
|
-
export async function initializeConversationMemory(config) {
|
|
12
|
+
export async function initializeConversationMemory(config, eventEmitter) {
|
|
13
13
|
logger.debug("[conversationMemoryInitializer] Initialize conversation memory called", {
|
|
14
14
|
hasConfig: !!config,
|
|
15
15
|
hasMemoryConfig: !!config?.conversationMemory,
|
|
@@ -55,7 +55,7 @@ export async function initializeConversationMemory(config) {
|
|
|
55
55
|
});
|
|
56
56
|
// Create Redis-based conversation memory manager
|
|
57
57
|
logger.debug("[conversationMemoryInitializer] Creating Redis conversation memory manager");
|
|
58
|
-
const redisMemoryManager = createConversationMemoryManager(memoryConfig, "redis", redisConfig);
|
|
58
|
+
const redisMemoryManager = createConversationMemoryManager(memoryConfig, "redis", redisConfig, eventEmitter);
|
|
59
59
|
logger.debug("[conversationMemoryInitializer] Checking Redis manager creation result", {
|
|
60
60
|
managerType: redisMemoryManager?.constructor?.name || "unknown",
|
|
61
61
|
isRedisType: redisMemoryManager?.constructor?.name ===
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Redis-based implementation of conversation storage with same interface as ConversationMemoryManager
|
|
4
4
|
*/
|
|
5
5
|
import type { ConversationMemoryConfig, ConversationMemoryStats, ChatMessage, RedisStorageConfig, SessionMetadata, RedisConversationObject, StoreConversationTurnOptions } from "../types/conversation.js";
|
|
6
|
+
import type { TypedEventEmitter, NeuroLinkEvents } from "../types/common.js";
|
|
6
7
|
/**
|
|
7
8
|
* Redis-based implementation of the ConversationMemoryManager
|
|
8
9
|
* Uses the same interface but stores data in Redis
|
|
@@ -12,6 +13,10 @@ export declare class RedisConversationMemoryManager {
|
|
|
12
13
|
private isInitialized;
|
|
13
14
|
private redisConfig;
|
|
14
15
|
private redisClient;
|
|
16
|
+
/**
|
|
17
|
+
* Event emitter for conversation memory events
|
|
18
|
+
*/
|
|
19
|
+
private eventEmitter?;
|
|
15
20
|
/**
|
|
16
21
|
* Temporary storage for tool execution data to prevent race conditions
|
|
17
22
|
* Key format: "${sessionId}:${userId}"
|
|
@@ -27,7 +32,7 @@ export declare class RedisConversationMemoryManager {
|
|
|
27
32
|
* Key format: "${sessionId}:${userId}"
|
|
28
33
|
*/
|
|
29
34
|
private summarizationInProgress;
|
|
30
|
-
constructor(config: ConversationMemoryConfig, redisConfig?: RedisStorageConfig);
|
|
35
|
+
constructor(config: ConversationMemoryConfig, redisConfig?: RedisStorageConfig, eventEmitter?: TypedEventEmitter<NeuroLinkEvents>);
|
|
31
36
|
/**
|
|
32
37
|
* Initialize the memory manager with Redis connection
|
|
33
38
|
*/
|
|
@@ -19,6 +19,10 @@ export class RedisConversationMemoryManager {
|
|
|
19
19
|
isInitialized = false;
|
|
20
20
|
redisConfig;
|
|
21
21
|
redisClient = null;
|
|
22
|
+
/**
|
|
23
|
+
* Event emitter for conversation memory events
|
|
24
|
+
*/
|
|
25
|
+
eventEmitter;
|
|
22
26
|
/**
|
|
23
27
|
* Temporary storage for tool execution data to prevent race conditions
|
|
24
28
|
* Key format: "${sessionId}:${userId}"
|
|
@@ -34,9 +38,10 @@ export class RedisConversationMemoryManager {
|
|
|
34
38
|
* Key format: "${sessionId}:${userId}"
|
|
35
39
|
*/
|
|
36
40
|
summarizationInProgress = new Set();
|
|
37
|
-
constructor(config, redisConfig = {}) {
|
|
41
|
+
constructor(config, redisConfig = {}, eventEmitter) {
|
|
38
42
|
this.config = config;
|
|
39
43
|
this.redisConfig = getNormalizedConfig(redisConfig);
|
|
44
|
+
this.eventEmitter = eventEmitter;
|
|
40
45
|
}
|
|
41
46
|
/**
|
|
42
47
|
* Initialize the memory manager with Redis connection
|
|
@@ -253,6 +258,14 @@ export class RedisConversationMemoryManager {
|
|
|
253
258
|
if (this.redisConfig.ttl > 0) {
|
|
254
259
|
await this.redisClient?.expire(updatedRedisKey, this.redisConfig.ttl);
|
|
255
260
|
}
|
|
261
|
+
if (this.eventEmitter) {
|
|
262
|
+
this.eventEmitter.emit("conversation:titleGenerated", {
|
|
263
|
+
sessionId: options.sessionId,
|
|
264
|
+
userId: normalizedUserId,
|
|
265
|
+
title,
|
|
266
|
+
timestamp: Date.now(),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
256
269
|
}
|
|
257
270
|
}
|
|
258
271
|
catch (titleError) {
|
|
@@ -687,12 +700,11 @@ export class RedisConversationMemoryManager {
|
|
|
687
700
|
const titleGenerator = new NeuroLink({
|
|
688
701
|
conversationMemory: { enabled: false },
|
|
689
702
|
});
|
|
690
|
-
const
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
User message: "${userMessage}`;
|
|
703
|
+
const fallbackTitlePrompt = `\nYou are an expert at generating ultra-concise conversation titles.\n\nGenerate a single clear, descriptive title that accurately reflects the core topic of the user's message.\n\nStrict rules:\n- The title MUST be 18 characters or fewer (including spaces).\n- Output ONLY the title text (no quotes, no punctuation, no explanations).\n- Use natural words; abbreviations are allowed only if they improve clarity.\n- Avoid generic words like "issue", "problem", "help", or "discussion".\n- Do not say you cannot generate a title.\n- Always return exactly one valid title within the character limit.\n\nUser message:\n"${userMessage}"\n`;
|
|
704
|
+
const envPrompt = process.env.NEUROLINK_TITLE_PROMPT;
|
|
705
|
+
const titlePrompt = envPrompt
|
|
706
|
+
? envPrompt.replace(/\$\{userMessage\}/g, userMessage)
|
|
707
|
+
: fallbackTitlePrompt;
|
|
696
708
|
const result = await titleGenerator.generate({
|
|
697
709
|
input: { text: titlePrompt },
|
|
698
710
|
provider: this.config.summarizationProvider || "vertex",
|
|
@@ -14,3 +14,4 @@ export type { SlideType, SlideLayout, BulletPoint, SlideContent, SlideSchema, Co
|
|
|
14
14
|
export { PPTError, PPT_ERROR_CODES, extractPPTContext, MIN_SLIDES, MAX_SLIDES, SLIDE_DIMENSIONS, isValidHexColor, normalizeHexColor, } from "./types.js";
|
|
15
15
|
export { THEMES, getTheme, SLIDE_TYPE_TO_LAYOUT, SLIDE_TYPE_CATEGORIES, getLayoutForType, DIAGRAM_SLIDE_TYPES, IMAGE_SLIDE_TYPES, isDiagramSlideType, isImageSlideType, AUDIENCE_GUIDELINES, TONE_GUIDELINES, CONTENT_PLANNING_SYSTEM_PROMPT, buildContentPlanningPrompt, enhanceImagePrompt, MIN_PAGES, MAX_PAGES, MIN_TOPIC_LENGTH, MAX_TOPIC_LENGTH, VALID_THEMES, VALID_AUDIENCES, VALID_TONES, VALID_ASPECT_RATIOS, CONTENT_PLANNING_TIMEOUT_MS, IMAGE_GENERATION_TIMEOUT_MS, MAX_CONCURRENT_IMAGE_GENERATIONS, PPT_GENERATION_TIMEOUT_MS, } from "./constants.js";
|
|
16
16
|
export { generateContentPlan, ensureTitleSlide, ensureThankYouSlide, postProcessPlan, } from "./contentPlanner.js";
|
|
17
|
+
export { SlideGenerator, createSlideGenerator, generateSlidesFromPlan, PptxGenJS, type SlideGeneratorConfig, type SlideGenerationBatchResult, type LogoConfig, type LogoPosition, } from "./slideGenerator.js";
|
|
@@ -23,3 +23,5 @@ MIN_PAGES, MAX_PAGES, MIN_TOPIC_LENGTH, MAX_TOPIC_LENGTH, VALID_THEMES, VALID_AU
|
|
|
23
23
|
CONTENT_PLANNING_TIMEOUT_MS, IMAGE_GENERATION_TIMEOUT_MS, MAX_CONCURRENT_IMAGE_GENERATIONS, PPT_GENERATION_TIMEOUT_MS, } from "./constants.js";
|
|
24
24
|
// Content Planner
|
|
25
25
|
export { generateContentPlan, ensureTitleSlide, ensureThankYouSlide, postProcessPlan, } from "./contentPlanner.js";
|
|
26
|
+
// Slide Generator
|
|
27
|
+
export { SlideGenerator, createSlideGenerator, generateSlidesFromPlan, PptxGenJS, } from "./slideGenerator.js";
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PPT Slide Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates individual complete slides with content, images, and layout.
|
|
5
|
+
* Uses existing NeuroLink image generation capabilities and pptxgenjs for slide creation.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - Receives SlideSchema from ContentPlanner
|
|
9
|
+
* - Generates AI images for applicable slide types
|
|
10
|
+
* - Creates pptxgenjs slides with proper layouts
|
|
11
|
+
* - Returns CompleteSlide objects ready for assembly
|
|
12
|
+
*
|
|
13
|
+
* @module presentation/slideGenerator
|
|
14
|
+
*/
|
|
15
|
+
import PptxGenJS from "pptxgenjs";
|
|
16
|
+
import type { SlideSchema, CompleteSlide, PresentationTheme, AspectRatioOption, PptxSlide, PptxPresentation } from "./types.js";
|
|
17
|
+
import { NeuroLink } from "../../neurolink.js";
|
|
18
|
+
/**
|
|
19
|
+
* Logo position options for slides
|
|
20
|
+
*/
|
|
21
|
+
export type LogoPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right" | "title-only";
|
|
22
|
+
/**
|
|
23
|
+
* Logo configuration options
|
|
24
|
+
*/
|
|
25
|
+
export type LogoConfig = {
|
|
26
|
+
/** Logo data - Buffer, base64 string, data URI, or file path */
|
|
27
|
+
data: Buffer | string;
|
|
28
|
+
/** Position on slides (default: "bottom-right") */
|
|
29
|
+
position?: LogoPosition;
|
|
30
|
+
/** Width in inches (default: 1) */
|
|
31
|
+
width?: number;
|
|
32
|
+
/** Height in inches (default: 0.4) */
|
|
33
|
+
height?: number;
|
|
34
|
+
/** Show on all slides or specific types (default: "all-slides") */
|
|
35
|
+
showOn?: "all-slides" | "title-only" | "title-and-closing";
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Configuration for slide generation
|
|
39
|
+
*/
|
|
40
|
+
export type SlideGeneratorConfig = {
|
|
41
|
+
/** Theme name or custom theme */
|
|
42
|
+
theme: string | PresentationTheme;
|
|
43
|
+
/** Whether to generate AI images */
|
|
44
|
+
includeImages: boolean;
|
|
45
|
+
/** Aspect ratio for slides */
|
|
46
|
+
aspectRatio: AspectRatioOption;
|
|
47
|
+
/** Provider for image generation */
|
|
48
|
+
provider?: string;
|
|
49
|
+
/** Model for image generation */
|
|
50
|
+
imageModel?: string;
|
|
51
|
+
/** Logo configuration */
|
|
52
|
+
logo?: Buffer | string | LogoConfig;
|
|
53
|
+
/** NeuroLink instance for image generation */
|
|
54
|
+
neurolink?: NeuroLink;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Result from generating a batch of slides
|
|
58
|
+
*/
|
|
59
|
+
export type SlideGenerationBatchResult = {
|
|
60
|
+
slides: CompleteSlide[];
|
|
61
|
+
totalImages: number;
|
|
62
|
+
failedImages: number;
|
|
63
|
+
generationTime: number;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Generates individual slides with content, images, and proper layouts
|
|
67
|
+
*/
|
|
68
|
+
export declare class SlideGenerator {
|
|
69
|
+
private theme;
|
|
70
|
+
private config;
|
|
71
|
+
private neurolink;
|
|
72
|
+
private imageLimit;
|
|
73
|
+
constructor(config: SlideGeneratorConfig);
|
|
74
|
+
/**
|
|
75
|
+
* Generate a single complete slide
|
|
76
|
+
*/
|
|
77
|
+
generateSlide(slideSchema: SlideSchema): Promise<CompleteSlide>;
|
|
78
|
+
/**
|
|
79
|
+
* Generate multiple slides in parallel (with concurrency limit)
|
|
80
|
+
*/
|
|
81
|
+
generateSlides(schemas: SlideSchema[]): Promise<SlideGenerationBatchResult>;
|
|
82
|
+
/**
|
|
83
|
+
* Render a CompleteSlide to a pptxgenjs slide
|
|
84
|
+
*/
|
|
85
|
+
renderSlide(ppt: PptxPresentation, completeSlide: CompleteSlide, slideNumber: number, totalSlides: number): PptxSlide;
|
|
86
|
+
private generateImage;
|
|
87
|
+
private applyBackground;
|
|
88
|
+
private applyLayout;
|
|
89
|
+
private getLogoConfig;
|
|
90
|
+
private getLogoDataUri;
|
|
91
|
+
private addLogo;
|
|
92
|
+
private addSlideNumber;
|
|
93
|
+
}
|
|
94
|
+
export { PptxGenJS };
|
|
95
|
+
export declare function createSlideGenerator(config: SlideGeneratorConfig): SlideGenerator;
|
|
96
|
+
export declare function generateSlidesFromPlan(schemas: SlideSchema[], config: SlideGeneratorConfig): Promise<SlideGenerationBatchResult>;
|