import { RiverConnection, RiverConnectionModel } from './river-connection/riverConnection';
import { RiverConfig } from '../riverConfig';
import { RetryParams } from '../rpcInterceptors';
import { Store } from '../store/store';
import { SignerContext } from '../signerContext';
import { RiverChainModel } from './river-connection/models/riverChain';
import { User, UserModel } from './user/user';
import { UserMembershipsModel } from './user/models/userMemberships';
import { PersistedObservable } from '../observable/persistedObservable';
import { Observable } from '../observable/observable';
import { UserInboxModel } from './user/models/userInbox';
import { UserMetadataModel } from './user/models/userMetadata';
import { UserSettingsModel } from './user/models/userSettings';
import { Spaces, SpacesModel } from './spaces/spaces';
import { AuthStatus } from './river-connection/models/authStatus';
import { ethers } from 'ethers';
import type { EncryptionDeviceInitOpts } from '@river-build/encryption';
import { Gdms, type GdmsModel } from './gdms/gdms';
import { Dms, DmsModel } from './dms/dms';
import { UnpackEnvelopeOpts } from '../sign';
import { DLogger } from '@river-build/dlog';
export interface SyncAgentConfig {
    context: SignerContext;
    riverConfig: RiverConfig;
    retryParams?: RetryParams;
    highPriorityStreamIds?: string[];
    deviceId?: string;
    disablePersistenceStore?: boolean;
    riverProvider?: ethers.providers.Provider;
    baseProvider?: ethers.providers.Provider;
    encryptionDevice?: EncryptionDeviceInitOpts;
    onTokenExpired?: () => void;
    unpackEnvelopeOpts?: UnpackEnvelopeOpts;
    logId?: string;
}
export declare class SyncAgent {
    log: DLogger;
    userId: string;
    config: SyncAgentConfig;
    riverConnection: RiverConnection;
    store: Store;
    user: User;
    spaces: Spaces;
    gdms: Gdms;
    dms: Dms;
    private stopped;
    observables: {
        riverAuthStatus: Observable<AuthStatus>;
        riverConnection: PersistedObservable<RiverConnectionModel>;
        riverChain: PersistedObservable<RiverChainModel>;
        spaces: PersistedObservable<SpacesModel>;
        user: PersistedObservable<UserModel>;
        userMemberships: PersistedObservable<UserMembershipsModel>;
        userInbox: PersistedObservable<UserInboxModel>;
        userMetadata: PersistedObservable<UserMetadataModel>;
        userSettings: PersistedObservable<UserSettingsModel>;
        gdms: PersistedObservable<GdmsModel>;
        dms: PersistedObservable<DmsModel>;
    };
    constructor(config: SyncAgentConfig);
    start(): Promise<void>;
    stop(): Promise<void>;
    syncAgentDbName(): string;
    persistenceDbName(): string;
    cryptoDbName(): string;
    dbName(db: string): string;
}
//# sourceMappingURL=syncAgent.d.ts.map