import { z } from 'zod';

declare const domainsMapping: z.ZodArray<z.ZodObject<{
    from: z.ZodString;
    to: z.ZodString;
}, z.core.$strip>>;
declare const IFRAME_PERMISSIONS_SCHEMA: z.ZodDefault<z.ZodObject<{
    isFullscreenAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
    isMicrophoneAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
    isCameraAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
    isSpeakerSelectionAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
    isClipboardWriteAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
}, z.core.$strip>>;
declare const IFRAME_METADATA_SCHEMA: z.ZodObject<{
    domainsMapping: z.ZodArray<z.ZodObject<{
        from: z.ZodString;
        to: z.ZodString;
    }, z.core.$strip>>;
    permissions: z.ZodDefault<z.ZodObject<{
        isFullscreenAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
        isMicrophoneAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
        isCameraAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
        isSpeakerSelectionAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
        isClipboardWriteAllowed: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>, z.ZodTransform<boolean, boolean | null | undefined>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
declare function buildAllowString(permissions: Partial<IFramePermissions>): string;
type DomainsMapping = z.infer<typeof domainsMapping>;
type IFramePermissions = z.infer<typeof IFRAME_PERMISSIONS_SCHEMA>;
type IFrameMetadata = z.infer<typeof IFRAME_METADATA_SCHEMA>;
type GetAppEntrypointParams = {
    appUrl: string;
    domainsMapping: Array<{
        from: string;
        to: string;
    }>;
};
declare function getAppEntrypoint({ appUrl, domainsMapping }: GetAppEntrypointParams): string;
type MiniappType = {
    id: string;
    name?: string | null;
    appUrl?: string | null;
    domains?: {
        mapping: Array<{
            from: string;
            to: string;
        }>;
    } | null;
    isFullscreenAllowed?: boolean | null;
    isMicrophoneAllowed?: boolean | null;
    isCameraAllowed?: boolean | null;
    isSpeakerSelectionAllowed?: boolean | null;
};
type MiniappMetaData = {
    id: string;
    name: string | null;
    entrypoint: string;
    domainsMapping: DomainsMapping;
    permissions: IFramePermissions;
};
declare function extractMiniappMetadata(app: MiniappType): MiniappMetaData | null;

export { type DomainsMapping, IFRAME_METADATA_SCHEMA, IFRAME_PERMISSIONS_SCHEMA, type IFrameMetadata, type IFramePermissions, type MiniappMetaData, buildAllowString, extractMiniappMetadata, getAppEntrypoint };
