import type { Platform } from './prompts'; import type { LocalSubstitutionData, SubstitutionData } from './types'; export declare const IGNORES_PATHS: string[]; export declare const LOCAL_EXCLUDED_FILES: Set; export declare const LOCAL_EXCLUDED_DIRS: Set; /** * Maps template top-level directory names to the platform name in `expo-module.config.json`. * Files under these directories are only copied when the corresponding platform is selected. */ export declare const TEMPLATE_DIR_TO_PLATFORM: Record; export declare function getGeneratedWebStubSentinel(moduleName: string): string; export declare function handleSuffix(name: string, suffix: string): string; /** * Converts a slug to an Android package name. */ export declare function slugToAndroidPackage(slug: string): string; /** * Recursively scans for the files within the directory. Returned paths are relative to the `root` path. */ export declare function getFilesAsync(root: string, dir?: string | null): Promise; /** * Downloads the template from NPM registry. */ export declare function downloadPackageAsync(targetDir: string, isLocal?: boolean): Promise; /** * Builds the augmented substitution data object by rendering all snippet slots. * Extracted from `createModuleFromTemplate` for reuse. */ export declare function buildAugmentedData(snippetsDir: string, data: SubstitutionData | LocalSubstitutionData): Promise<{ moduleSnippetsSwift: string; moduleSnippetsKt: string; viewSnippetsSwift: string; viewSnippetsKt: string; webEventImport: string; webEventType: string; webModuleSnippets: string; appModuleCombinedImport: string; appExternalImportSnippets: string; appReactImportSnippets: string; appHookSnippets: string; appJSXSnippets: string; usesSwiftUI: boolean; usesCompose: boolean; usesExpoUI: boolean; project: { slug: string; name: string; version: string; description: string; package: string; moduleName: string; viewName: string; swiftUIViewName: string; swiftUIModifierName: string; composeViewName: string; composeModifierName: string; sharedObjectName: string; platforms: Platform[]; features: import("./features").Feature[]; }; author: string; license: string; repo: string; type: "standalone"; } | { moduleSnippetsSwift: string; moduleSnippetsKt: string; viewSnippetsSwift: string; viewSnippetsKt: string; webEventImport: string; webEventType: string; webModuleSnippets: string; appModuleCombinedImport: string; appExternalImportSnippets: string; appReactImportSnippets: string; appHookSnippets: string; appJSXSnippets: string; usesSwiftUI: boolean; usesCompose: boolean; usesExpoUI: boolean; project: { slug: string; name: string; package: string; moduleName: string; viewName: string; swiftUIViewName: string; swiftUIModifierName: string; composeViewName: string; composeModifierName: string; sharedObjectName: string; platforms: Platform[]; features: import("./features").Feature[]; }; type: "local"; }>; /** * Copies template files to the target directory. */ export declare function copyTemplateFiles(templatePath: string, targetPath: string, augmentedData: Awaited>, options: { platforms: Platform[]; platformsOnly?: boolean; moduleType: 'standalone' | 'local'; }): Promise; /** * Re-renders the .web.ts stub as a full web implementation using the provided data. * Called when adding `web` to a module that already has native platforms. */ export declare function updateWebStub(templatePath: string, targetDir: string, data: SubstitutionData | LocalSubstitutionData): Promise;