import { DomeEmbeddedAppSdk, CardClientMessageType } from "./dome-sdk";
import { CardFsFileType, CardPermission } from "./types/card-sdk.types";
import type { CardEventHandler, CardFsCallback, CardFsListHandler, CardFsReadHandler, CardFsWriteUpdatePayload, CardKeyBlob, CardPermissionsMap, CardUser, CardUserRole } from "./types/card-sdk.types";
export { CardFsErrorCode, CardFsFileType, CardPermission, cardPermission } from "./types/card-sdk.types";
export type { CardEventHandler, CardFileChangePayload, CardFsCallback, CardFsErrorPayload, CardFsListHandler, CardFsListResult, CardFsReadHandler, CardFsReadResult, CardFsReadUpdatePayload, CardFsWriteUpdatePayload, CardInitData, CardInitErrorPayload, CardKeyBlob, CardKeyBlobV1, CardPermissionsMap, CardRefreshRequestPayload, CardUiProps, CardUser, CardUserCover, CardUserCoverPhoto, CardUserName, CardUserOrganization, CardUserPhoto, CardUserRole, } from "./types/card-sdk.types";
export declare function getKeyFromBlobStr(blobStr: string): string;
export declare function getKeyFromBlob(blob: CardKeyBlob): string;
/**
 * Use CardSdk to create webapp cards
 */
export declare class CardSdk extends DomeEmbeddedAppSdk {
    private static instance;
    private handler;
    private cryptoA01;
    private static readonly FS_RESPONSE_TIMEOUT_MS;
    private static readonly FS_READ_RETENTION_MS;
    private static readonly CARD_FS_ACK_TIMEOUT_MS;
    private static readonly MAX_CONSOLE_ARG_CHARS;
    private static readonly MAX_CONSOLE_LOG_ENTRIES;
    private static readonly MAX_CONSOLE_STRING_PREVIEW_CHARS;
    private static readonly DEFAULT_ROLE_PERMISSIONS;
    dataStore: any;
    private accessToken;
    devMode: boolean;
    permission: CardPermissionsMap | null;
    userRole: CardUserRole | null;
    cardFS: {
        read: (name: string, handler: CardFsReadHandler, allowStale?: boolean) => void;
        readById: (iuid: string, handler: CardFsReadHandler, allowStale?: boolean) => void;
        write: (name: string, fileData: any, fileType: CardFsFileType, onUpdate?: CardFsCallback<CardFsWriteUpdatePayload>) => Promise<any>;
        writeById: (iuid: string, fileData: any, fileType: CardFsFileType, onUpdate?: CardFsCallback<CardFsWriteUpdatePayload>) => Promise<any>;
        delete: (name: string, onUpdate?: CardFsCallback) => Promise<any>;
        deleteById: (iuid: string, onUpdate?: CardFsCallback) => Promise<any>;
        list: (folderName: string, handler: CardFsListHandler) => void;
    };
    private fsReadRequests;
    private fsWriteRequests;
    private fsListRequests;
    private cardFsCache;
    private containerIuid?;
    private pendingAcks;
    private consoleCaptureInstalled;
    private consoleCaptureEnabled;
    private consoleCaptureMinLevel;
    private consoleLogBuffer;
    private consoleLogWriteIndex;
    private consoleLogSize;
    private buildCardFsMessagePayload;
    private formatFolderPath;
    private assertValidReadHandler;
    private assertValidListHandler;
    private invokeReadHandlerNext;
    private invokeReadHandlerError;
    private sanitizeReadData;
    private normalizeReadData;
    private encodeTextPayload;
    private encodeJsonPayload;
    private normalizeWriteData;
    private base64EncodeBinaryData;
    private getWriteDataSizeBytes;
    private getCardIuid;
    private ensureCardFsCache;
    private supportsParentCardFs;
    private shouldUseCardFsFallback;
    private constructor();
    /**
     * Static initialization method to get or create the singleton instance of CardSdk.
     * @param secret - The card developer secret key
     * @param handler - (Optional) Handler for different events emitted by the SDK
     * @returns The singleton CardSdk instance
     */
    static init(secret: string, handler?: CardEventHandler, options?: {
        devMode?: boolean;
    }): Promise<CardSdk>;
    /**
     * Method to set or update the handler object.
     * @param handler - Custom handler for different message types
     */
    setHandler(handler: CardEventHandler): void;
    isCardFsFallbackEnabled(): boolean;
    /**
     * Sends a deep link request to the parent directly from the card.
     */
    openDeepLink(href: string): void;
    /**
     * Checks if the user has the requested permission.
     * @param permission - A value from CardPermission enum (e.g CardPermission.READ, CardPermission.WRITE)
     * @returns Boolean based on the permission presence
     */
    hasPerm(permission: CardPermission): boolean;
    /**
     * Checks if the permissions allow reading
     * @returns - True if the permission string allows read access to user
     */
    canRead(): boolean;
    /**
     * Checks if the permissions allow writing
     * @returns - True if the permission string allows write access to user
     */
    canWrite(): boolean;
    private deriveSecretSeed;
    private getCardIuidEnc;
    private requestAf1DataFromParent;
    private fetchAf1Data;
    private initializeCardSdk;
    private sendInit;
    private getWebappDetails;
    private sendMessageWithAck;
    private resolvePendingAckByType;
    protected handleMessage: (type: CardClientMessageType, data: any) => void;
    private cardFSRead;
    private cardFSReadById;
    private cardFSReadInternal;
    private isCardFsAckType;
    private cardFSWrite;
    private cardFSWriteById;
    private cardFSWriteInternal;
    private cardFSDelete;
    private cardFSDeleteById;
    private cardFSDeleteInternal;
    private cardFSList;
    private cardFSListFallbackStream;
    private resetFsReadProgressTimeout;
    private resetFsWriteProgressTimeout;
    private resetFsListProgressTimeout;
    private handleFsReadDataMessage;
    private handleFsAckMessage;
    private clearFsReadRequest;
    private sendConsoleLogs;
    private setupConsoleCapture;
    private applyLoggingConfig;
    private isConsoleLogLevel;
    private shouldCaptureLevel;
    private recordConsoleEntry;
    private clearConsoleLogs;
    private getConsoleLogs;
    private serializeConsoleArg;
    private truncateSerializedArg;
    private buildTruncatedPreview;
    private failFsReadRequest;
    private clearFsWriteRequest;
    private clearFsListRequest;
    private failFsWriteRequest;
    private failFsListRequest;
    private handleFsWriteSuccess;
    private handleFsListDataMessage;
    private createCardFsError;
    private toCardFsErrorPayload;
    private cardFSReadFallback;
    private cardFSWriteFallback;
    private cardFSDeleteFallback;
    private cardFSListFallback;
    private authHeader;
    private fetchDocumentMetadataByTarget;
    private fetchDocumentMetadataByIuid;
    private normalizeDocumentsResponse;
    private normalizeListResult;
    private getCardFsErrorCode;
    private isBinaryReadPayload;
    private decodeBase64BinaryData;
    private fetchDocumentMetadataByName;
    private fetchFolderListing;
    private fetchDocumentPayload;
    private fetchDocumentData;
    private buildFileFormData;
    private upsertDocumentViaApi;
    private formatErrorMessage;
    private sendEventError;
    setFileDirty(data: {
        iuid: string;
        ts_m: number;
    }): void;
    getUsername(userObj: CardUser | null | undefined): string;
    private attachUserFullName;
}
