@towns-protocol/sdk
Version:
For more details, visit the following resources:
62 lines • 2.54 kB
TypeScript
import { RiverRegistry, SpaceDapp } from '@towns-protocol/web3';
import { RiverChain } from './models/riverChain';
import { Identifiable, Store } from '../../store/store';
import { CryptoStore, type EncryptionDeviceInitOpts } from '@towns-protocol/encryption';
import { EntitlementsDelegate } from '../../decryptionExtensions';
import { Client, ClientOptions } from '../../client';
import { SignerContext } from '../../signerContext';
import { PersistedObservable } from '../../observable/persistedObservable';
import { TransactionalClient } from './models/transactionalClient';
import { Observable } from '../../observable/observable';
import { AuthStatus } from './models/authStatus';
import { RetryParams } from '../../rpcInterceptors';
import { Stream } from '../../stream';
export interface ClientParams {
signerContext: SignerContext;
cryptoStore: CryptoStore;
entitlementsDelegate: EntitlementsDelegate;
opts?: ClientOptions;
encryptionDevice?: EncryptionDeviceInitOpts;
onTokenExpired?: () => void;
rpcRetryParams?: RetryParams;
}
export type OnStoppedFn = () => void;
export type onClientStartedFn = (client: Client) => OnStoppedFn;
export interface RiverConnectionModel extends Identifiable {
id: '0';
userExists: boolean;
}
export declare class RiverConnection extends PersistedObservable<RiverConnectionModel> {
spaceDapp: SpaceDapp;
riverRegistryDapp: RiverRegistry;
clientParams: ClientParams;
client?: TransactionalClient;
riverChain: RiverChain;
authStatus: Observable<AuthStatus>;
loginError?: Error;
private logger;
private clientQueue;
private views;
private onStoppedFns;
newUserMetadata?: {
spaceId: Uint8Array | string;
};
private loginPromise?;
constructor(store: Store, spaceDapp: SpaceDapp, riverRegistryDapp: RiverRegistry, clientParams: ClientParams);
protected onLoaded(): void;
get userId(): string;
start(): Promise<void>;
stop(): Promise<void>;
call<T>(fn: (client: Client) => Promise<T>): Promise<T>;
withStream(streamId: string): {
call: <T>(fn: (client: Client, stream: Stream) => Promise<T>) => Promise<T>;
};
callWithStream<T>(streamId: string, fn: (client: Client, stream: Stream) => Promise<T>): Promise<T>;
registerView(viewFn: onClientStartedFn): void;
private createStreamsClient;
login(newUserMetadata?: {
spaceId: Uint8Array | string;
}): Promise<void>;
private loginWithRetries;
}
//# sourceMappingURL=riverConnection.d.ts.map