import { Identifiable, Store } from '../../store/store';
import { PersistedObservable } from '../../observable/persistedObservable';
import { Space } from './models/space';
import { UserMemberships } from '../user/models/userMemberships';
import { RiverConnection } from '../river-connection/riverConnection';
import { CreateSpaceParams, SpaceDapp } from '@river-build/web3';
import { ethers } from 'ethers';
export interface SpacesModel extends Identifiable {
    id: '0';
    spaceIds: string[];
}
export declare class Spaces extends PersistedObservable<SpacesModel> {
    private riverConnection;
    private userMemberships;
    private spaceDapp;
    private spaces;
    constructor(store: Store, riverConnection: RiverConnection, userMemberships: UserMemberships, spaceDapp: SpaceDapp);
    protected onLoaded(): void;
    getSpace(spaceId: string): Space;
    private onUserMembershipsChanged;
    createSpace(params: Partial<Omit<CreateSpaceParams, 'spaceName'>> & {
        spaceName: string;
    }, signer: ethers.Signer): Promise<{
        spaceId: string;
        defaultChannelId: string;
    }>;
    joinSpace(spaceId: string, ...args: Parameters<Space['join']>): Promise<void>;
}
//# sourceMappingURL=spaces.d.ts.map