SDK Methods Guide
Detailed SDK interface handbook for interacting with the Somnia Data Streams protocol via the typescript SDK
Installation
npm i @somnia-chain/streams viem dotenvProject Setup
RPC_URL=https://dream-rpc.somnia.network
PRIVATE_KEY=your_private_key_hereBasic Initialization
import { SDK } from '@somnia-chain/streams'
import { createPublicClient, createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { somniaTestnet } from 'viem/chains'
const rpcUrl = process.env.RPC_URL!
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
const sdk = new SDK({
public: createPublicClient({ chain: somniaTestnet, transport: http(rpcUrl) }),
wallet: createWalletClient({ chain: somniaTestnet, account, transport: http(rpcUrl) })
})Somnia Data Streams
Core Methods Overview
Write
set(d: DataStream[]): Promise<Hex | null>
set(d: DataStream[]): Promise<Hex | null>emitEvents(e: EventStream[]): Promise<Hex | Error | null>
emitEvents(e: EventStream[]): Promise<Hex | Error | null>setAndEmitEvents(d: DataStream[], e: EventStream[]): Promise<Hex | Error | null>
setAndEmitEvents(d: DataStream[], e: EventStream[]): Promise<Hex | Error | null>Manage
registerDataSchemas(registrations: DataSchemaRegistration[], ignoreRegisteredSchemas?: boolean): Promise<Hex | Error | null>
registerDataSchemas(registrations: DataSchemaRegistration[], ignoreRegisteredSchemas?: boolean): Promise<Hex | Error | null>registerEventSchemas(ids: string[], schemas: EventSchema[]): Promise<Hex | Error | null>
registerEventSchemas(ids: string[], schemas: EventSchema[]): Promise<Hex | Error | null>manageEventEmittersForRegisteredStreamsEvent(streamsEventId: string, emitter: Address, isEmitter: boolean): Promise<Hex | Error | null>
manageEventEmittersForRegisteredStreamsEvent(streamsEventId: string, emitter: Address, isEmitter: boolean): Promise<Hex | Error | null>Read
getByKey(schemaId: SchemaID, publisher: Address, key: Hex): Promise<Hex[] | SchemaDecodedItem[][] | null>
getByKey(schemaId: SchemaID, publisher: Address, key: Hex): Promise<Hex[] | SchemaDecodedItem[][] | null>getAtIndex(schemaId: SchemaID, publisher: Address, idx: bigint): Promise<Hex[] | SchemaDecodedItem[][] | null>
getAtIndex(schemaId: SchemaID, publisher: Address, idx: bigint): Promise<Hex[] | SchemaDecodedItem[][] | null>getBetweenRange(schemaId: SchemaID, publisher: Address, startIndex: bigint, endIndex: bigint): Promise<Hex[] | SchemaDecodedItem[][] | Error | null>
getBetweenRange(schemaId: SchemaID, publisher: Address, startIndex: bigint, endIndex: bigint): Promise<Hex[] | SchemaDecodedItem[][] | Error | null>getAllPublisherDataForSchema(schemaReference: SchemaReference, publisher: Address): Promise<Hex[] | SchemaDecodedItem[][] | null>
getAllPublisherDataForSchema(schemaReference: SchemaReference, publisher: Address): Promise<Hex[] | SchemaDecodedItem[][] | null>getLastPublishedDataForSchema(schemaId: SchemaID, publisher: Address): Promise<Hex[] | SchemaDecodedItem[][] | null>
getLastPublishedDataForSchema(schemaId: SchemaID, publisher: Address): Promise<Hex[] | SchemaDecodedItem[][] | null>totalPublisherDataForSchema(schemaId: SchemaID, publisher: Address): Promise<bigint | null>
totalPublisherDataForSchema(schemaId: SchemaID, publisher: Address): Promise<bigint | null>isDataSchemaRegistered(schemaId: SchemaID): Promise<boolean | null>
isDataSchemaRegistered(schemaId: SchemaID): Promise<boolean | null>parentSchemaId(schemaId: SchemaID): Promise<Hex | null>
parentSchemaId(schemaId: SchemaID): Promise<Hex | null>schemaIdToId(schemaId: SchemaID): Promise<string | null>
schemaIdToId(schemaId: SchemaID): Promise<string | null>idToSchemaId(id: string): Promise<Hex | null>
idToSchemaId(id: string): Promise<Hex | null>getAllSchemas(): Promise<string[] | null>
getAllSchemas(): Promise<string[] | null>getEventSchemasById(ids: string[]): Promise<EventSchema[] | null>
getEventSchemasById(ids: string[]): Promise<EventSchema[] | null>computeSchemaId(schema: string): Promise<Hex | null>
computeSchemaId(schema: string): Promise<Hex | null>getSchemaFromSchemaId(schemaId: SchemaID): Promise<{ baseSchema: string, finalSchema: string, schemaId: Hex } | Error | null>
getSchemaFromSchemaId(schemaId: SchemaID): Promise<{ baseSchema: string, finalSchema: string, schemaId: Hex } | Error | null>Helpers
deserialiseRawData(rawData: Hex[], parentSchemaId: Hex, schemaLookup: { schema: string; schemaId: Hex; } | null): Promise<Hex[] | SchemaDecodedItem[][] | null>
deserialiseRawData(rawData: Hex[], parentSchemaId: Hex, schemaLookup: { schema: string; schemaId: Hex; } | null): Promise<Hex[] | SchemaDecodedItem[][] | null>Subscribe
subscribe(initParams: SubscriptionInitParams): Promise<{ subscriptionId: string, unsubscribe: () => void } | undefined>
subscribe(initParams: SubscriptionInitParams): Promise<{ subscriptionId: string, unsubscribe: () => void } | undefined>Protocol
getSomniaDataStreamsProtocolInfo(): Promise<GetSomniaDataStreamsProtocolInfoResponse | Error | null>
getSomniaDataStreamsProtocolInfo(): Promise<GetSomniaDataStreamsProtocolInfoResponse | Error | null>Key Types Reference
Type
Description
Developer Tips
Last updated