import type { RealmFetchImpl } from './realm/client-types.js';
import type { RuntimeClientDefaults, RuntimeOptions, RuntimeTransportConfig } from './runtime/types.js';
import { type ReasonCodeValue } from './types/index.js';
import { type PlatformClient } from './platform-client.js';
export type NimiAppAuthMode = 'local-first-party' | 'third-party-nimi-app' | 'dev-standalone';
export type NimiAppDeveloperSession = {
    source: 'runtime-developer-session';
    sessionId: string;
    sessionToken: string;
    expiresAt?: string;
};
type SharedNimiAppRuntimePlatformClientInput = {
    appId: string;
    realmBaseUrl?: string;
    runtimeTransport?: RuntimeTransportConfig | null;
    runtimeDefaults?: RuntimeClientDefaults;
    runtimeOptions?: Omit<RuntimeOptions, 'appId' | 'transport' | 'auth' | 'subjectContext' | 'defaults'>;
    realmFetchImpl?: RealmFetchImpl;
};
export type NimiAppRuntimePlatformClientInput = SharedNimiAppRuntimePlatformClientInput & ({
    mode: 'local-first-party';
} | {
    mode: 'third-party-nimi-app';
} | {
    mode: 'dev-standalone';
    developerSession?: NimiAppDeveloperSession | null;
});
export type NimiAppAuthUnavailable = {
    status: 'unavailable' | 'action-required';
    mode: NimiAppAuthMode;
    reasonCode: ReasonCodeValue;
    actionHint: string;
    message: string;
};
export type NimiAppAuthProjection = {
    status: 'ready';
    mode: NimiAppAuthMode;
    client: PlatformClient;
    auth: {
        state: 'ready';
        source: 'runtime-local-first-party' | 'runtime-developer-session';
    };
} | NimiAppAuthUnavailable;
export declare function createNimiAppRuntimePlatformClient(input: NimiAppRuntimePlatformClientInput): Promise<NimiAppAuthProjection>;
export {};
//# sourceMappingURL=nimi-app-runtime-platform-client.d.ts.map