UNPKG

@river-build/sdk

Version:

For more details, visit the following resources:

188 lines 11 kB
import { EncryptedData, Envelope, StreamEvent, ChannelMessage, SyncStreamsResponse, PlainMessage, BlockchainTransaction_TokenTransfer } from '@river-build/proto'; import { IStreamStateView } from '../streamStateView'; import { Client, ClientOptions } from '../client'; import { ParsedEvent, StreamTimelineEvent } from '../types'; import { EntitlementsDelegate } from '@river-build/encryption'; import { ethers } from 'ethers'; import { StreamRpcClient } from '../makeStreamRpcClient'; import { SignerContext } from '../signerContext'; import { Address, LocalhostWeb3Provider, IRuleEntitlementBase, Permission, ISpaceDapp, LegacyMembershipStruct, MembershipStruct, LogicalOperationType, Operation, CreateSpaceParams, CreateLegacySpaceParams, SignerType, IRuleEntitlementV2Base, XchainConfig, UpdateRoleParams } from '@river-build/web3'; import { type TimelineEvent } from '../sync-agent/timeline/models/timeline-types'; import { RpcOptions } from '../rpcCommon'; export declare const makeTestRpcClient: (opts?: RpcOptions) => Promise<StreamRpcClient>; export declare const makeEvent_test: (context: SignerContext, payload: PlainMessage<StreamEvent>['payload'], prevMiniblockHash?: Uint8Array) => Promise<Envelope>; export declare const TEST_ENCRYPTED_MESSAGE_PROPS: PlainMessage<EncryptedData>; export declare const getXchainConfigForTesting: () => XchainConfig; export declare function erc1155CheckOp(contractName: string, tokenId: bigint, threshold: bigint): Promise<Operation>; export declare function erc20CheckOp(contractName: string, threshold: bigint): Promise<Operation>; export declare function mockCrossChainCheckOp(contractName: string, id: bigint): Promise<Operation>; export declare const twoEth: bigint; export declare const oneEth: bigint; export declare const threeEth: bigint; export declare const oneHalfEth: bigint; export declare function ethBalanceCheckOp(threshold: bigint): Operation; /** * makeUniqueSpaceStreamId - space stream ids are derived from the contract * in tests without entitlements there are no contracts, so we use a random id */ export declare const makeUniqueSpaceStreamId: () => string; export type SignerContextWithWallet = SignerContext & { wallet: ethers.Wallet; }; /** * * @returns a random user context * Done using a worker thread to avoid blocking the main thread */ export declare const makeRandomUserContext: () => Promise<SignerContextWithWallet>; export declare const makeRandomUserAddress: () => Uint8Array; export declare const makeUserContextFromWallet: (wallet: ethers.Wallet) => Promise<SignerContextWithWallet>; export interface TestClient extends Client { wallet: ethers.Wallet; deviceId: string; signerContext: SignerContextWithWallet; } export interface TestClientOpts extends ClientOptions { context?: SignerContextWithWallet; entitlementsDelegate?: EntitlementsDelegate; deviceId?: string; } export declare const cloneTestClient: (client: TestClient) => Promise<TestClient>; export declare const makeTestClient: (opts?: TestClientOpts) => Promise<TestClient>; export declare function setupWalletsAndContexts(): Promise<{ alice: TestClient; bob: TestClient; carol: TestClient; alicesWallet: ethers.Wallet; bobsWallet: ethers.Wallet; carolsWallet: ethers.Wallet; alicesContext: SignerContext & { wallet: ethers.Wallet; }; bobsContext: SignerContext & { wallet: ethers.Wallet; }; carolsContext: SignerContext & { wallet: ethers.Wallet; }; aliceProvider: LocalhostWeb3Provider; bobProvider: LocalhostWeb3Provider; carolProvider: LocalhostWeb3Provider; aliceSpaceDapp: ISpaceDapp; bobSpaceDapp: ISpaceDapp; carolSpaceDapp: ISpaceDapp; }>; declare class DonePromise { promise: Promise<string>; resolve: (value: string) => void; reject: (reason: any) => void; constructor(); done(): void; wait(): Promise<string>; expectToSucceed(): Promise<void>; expectToFail(): Promise<void>; run(fn: () => void): void; runAndDone(fn: () => void): void; } export declare const makeDonePromise: () => DonePromise; export declare const sendFlush: (client: StreamRpcClient) => Promise<void>; export declare function iterableWrapper<T>(iterable: AsyncIterable<T>): AsyncGenerator<T, void, unknown>; export declare const lastEventFiltered: <T extends (a: ParsedEvent) => any>(events: ParsedEvent[], f: T) => ReturnType<T> | undefined; export declare function createSpaceAndDefaultChannel(client: Client, spaceDapp: ISpaceDapp, wallet: ethers.Wallet, name: string, membership: LegacyMembershipStruct | MembershipStruct): Promise<{ spaceId: string; defaultChannelId: string; userStreamView: IStreamStateView; }>; export declare const DefaultFreeAllocation = 1000; export declare function createVersionedSpaceFromMembership(client: Client, spaceDapp: ISpaceDapp, wallet: ethers.Wallet, name: string, membership: LegacyMembershipStruct | MembershipStruct): Promise<ethers.ContractTransaction>; export declare function createVersionedSpace(spaceDapp: ISpaceDapp, createSpaceParams: CreateSpaceParams | CreateLegacySpaceParams, signer: SignerType): Promise<ethers.ContractTransaction>; export declare function createUserStreamAndSyncClient(client: Client, spaceDapp: ISpaceDapp, name: string, membershipInfo: LegacyMembershipStruct | MembershipStruct, wallet: ethers.Wallet): Promise<void>; export declare function expectUserCanJoin(spaceId: string, channelId: string, name: string, client: Client, spaceDapp: ISpaceDapp, address: string, wallet: ethers.Wallet): Promise<void>; export declare function everyoneMembershipStruct(spaceDapp: ISpaceDapp, client: Client): Promise<LegacyMembershipStruct>; export declare function zeroPriceWithLimitedAllocationMembershipStruct(spaceDapp: ISpaceDapp, client: Client, opts: { freeAllocation: number; }): Promise<LegacyMembershipStruct>; export declare function dynamicMembershipStruct(spaceDapp: ISpaceDapp, client: Client): Promise<LegacyMembershipStruct>; export declare function fixedPriceMembershipStruct(spaceDapp: ISpaceDapp, client: Client, opts?: { price: number; }): Promise<LegacyMembershipStruct>; export declare function getFreeSpacePricingSetup(spaceDapp: ISpaceDapp): Promise<{ fixedPricingModuleAddress: string; freeAllocation: number; price: number; }>; export declare function twoNftRuleData(nft1Address: string, nft2Address: string, logOpType?: LogicalOperationType.AND | LogicalOperationType.OR): IRuleEntitlementV2Base.RuleDataV2Struct; export declare function unlinkCaller(rootSpaceDapp: ISpaceDapp, rootWallet: ethers.Wallet, caller: ethers.Wallet): Promise<void>; export declare function unlinkWallet(rootSpaceDapp: ISpaceDapp, rootWallet: ethers.Wallet, linkedWallet: ethers.Wallet): Promise<void>; export declare function linkWallets(rootSpaceDapp: ISpaceDapp, rootWallet: ethers.Wallet, linkedWallet: ethers.Wallet): Promise<void>; export declare function waitFor<T>(callback: (() => T) | (() => Promise<T>), options?: { timeoutMS: number; }): Promise<T>; export declare function waitForSyncStreams(syncStreams: AsyncIterable<SyncStreamsResponse>, matcher: (res: SyncStreamsResponse) => Promise<boolean>): Promise<SyncStreamsResponse>; export declare function waitForSyncStreamsMessage(syncStreams: AsyncIterable<SyncStreamsResponse>, message: string): Promise<SyncStreamsResponse>; export declare function getChannelMessagePayload(event?: ChannelMessage): string | undefined; export declare function createEventDecryptedPromise(client: Client, expectedMessageText: string): Promise<string>; export declare function isValidEthAddress(address: string): boolean; export declare function getNftRuleData(testNftAddress: Address): IRuleEntitlementV2Base.RuleDataV2Struct; export interface CreateRoleContext { roleId: number | undefined; error: Error | undefined; } export declare function createRole(spaceDapp: ISpaceDapp, provider: ethers.providers.Provider, spaceId: string, roleName: string, permissions: Permission[], users: string[], ruleData: IRuleEntitlementBase.RuleDataStruct | IRuleEntitlementV2Base.RuleDataV2Struct, signer: ethers.Signer): Promise<CreateRoleContext>; export interface UpdateRoleContext { error: Error | undefined; } export declare function updateRole(spaceDapp: ISpaceDapp, provider: ethers.providers.Provider, params: UpdateRoleParams, signer: ethers.Signer): Promise<UpdateRoleContext>; export interface CreateChannelContext { channelId: string | undefined; error: Error | undefined; } export declare function createChannel(spaceDapp: ISpaceDapp, provider: ethers.providers.Provider, spaceId: string, channelName: string, roleIds: number[], signer: ethers.Signer): Promise<CreateChannelContext>; export declare function isEncryptedData(obj: unknown): obj is EncryptedData; export declare function createTownWithRequirements(requirements: { everyone: boolean; users: string[]; ruleData: IRuleEntitlementV2Base.RuleDataV2Struct; }): Promise<{ alice: TestClient; bob: TestClient; carol: TestClient; aliceSpaceDapp: ISpaceDapp; bobSpaceDapp: ISpaceDapp; carolSpaceDapp: ISpaceDapp; aliceProvider: LocalhostWeb3Provider; bobProvider: LocalhostWeb3Provider; carolProvider: LocalhostWeb3Provider; alicesWallet: ethers.Wallet; bobsWallet: ethers.Wallet; carolsWallet: ethers.Wallet; spaceId: string; channelId: string; bobUserStreamView: IStreamStateView; }>; export declare function expectUserCannotJoinSpace(spaceId: string, client: Client, spaceDapp: ISpaceDapp, address: string): Promise<void>; export declare function setupChannelWithCustomRole(userNames: string[], ruleData: IRuleEntitlementV2Base.RuleDataV2Struct, permissions?: Permission[]): Promise<{ alice: TestClient; bob: TestClient; carol: TestClient; alicesWallet: ethers.Wallet; bobsWallet: ethers.Wallet; carolsWallet: ethers.Wallet; aliceProvider: LocalhostWeb3Provider; bobProvider: LocalhostWeb3Provider; carolProvider: LocalhostWeb3Provider; aliceSpaceDapp: ISpaceDapp; bobSpaceDapp: ISpaceDapp; carolSpaceDapp: ISpaceDapp; spaceId: string; defaultChannelId: string; channelId: string | undefined; roleId: number | undefined; }>; export declare function expectUserCanJoinChannel(client: Client, spaceDapp: ISpaceDapp, spaceId: string, channelId: string): Promise<void>; export declare function expectUserCannotJoinChannel(client: Client, spaceDapp: ISpaceDapp, spaceId: string, channelId: string): Promise<void>; export declare const findMessageByText: (events: TimelineEvent[], text: string) => TimelineEvent | undefined; export declare function extractBlockchainTransactionTransferEvents(timeline: StreamTimelineEvent[]): BlockchainTransaction_TokenTransfer[]; export declare function extractMemberBlockchainTransactions(client: Client, channelId: string): BlockchainTransaction_TokenTransfer[]; export {}; //# sourceMappingURL=testUtils.d.ts.map