UNPKG

@solsdk/jito-ts

Version:

## What is it and why do you need it?

455 lines (454 loc) 25.3 kB
import { CallOptions, ChannelCredentials, Client, ClientOptions, ClientReadableStream, ClientUnaryCall, handleServerStreamingCall, handleUnaryCall, Metadata, ServiceError, UntypedServiceImplementation } from "@grpc/grpc-js"; import _m0 from "protobufjs/minimal"; import { ConfirmedTransaction, Reward } from "./confirmed_block"; export declare const protobufPackage = "solana.geyser"; export declare enum SlotUpdateStatus { CONFIRMED = 0, PROCESSED = 1, ROOTED = 2, UNRECOGNIZED = -1 } export declare function slotUpdateStatusFromJSON(object: any): SlotUpdateStatus; export declare function slotUpdateStatusToJSON(object: SlotUpdateStatus): string; export interface PartialAccountUpdate { /** Slot this update occurred. */ slot: number; /** Account's pubkey. */ pubkey: Uint8Array; /** Account's owner. */ owner: Uint8Array; /** Flags whether this update was streamed as part of startup, hence not a realtime update. */ isStartup: boolean; /** * A monotonically increasing number specifying the order of this update. * Can be used to determine what the latest update for an account was at * a given slot, assuming there were multiple updates. */ seq: number; /** Transaction signature that caused this update. */ txSignature?: string | undefined; /** AccountReplica version. */ replicaVersion: number; } export interface AccountUpdate { /** Slot this update occurred. */ slot: number; /** Account's pubkey. */ pubkey: Uint8Array; /** Account's lamports post update. */ lamports: number; /** Account's owner. */ owner: Uint8Array; /** Flags whether an account is executable. */ isExecutable: boolean; /** The epoch at which this account will next owe rent. */ rentEpoch: number; /** Account's data post update. */ data: Uint8Array; /** * A monotonically increasing number specifying the order of this update. * Can be used to determine what the latest update for an account was at * a given slot, assuming there were multiple updates. */ seq: number; /** Flags whether this update was streamed as part of startup i.e. not a real-time update. */ isStartup: boolean; /** Transaction signature that caused this update. */ txSignature?: string | undefined; /** AccountReplica version. */ replicaVersion: number; } export interface SlotUpdate { slot: number; parentSlot?: number | undefined; status: SlotUpdateStatus; } export interface TimestampedSlotUpdate { /** Time at which the message was generated */ ts: Date | undefined; /** Slot update */ slotUpdate: SlotUpdate | undefined; } export interface TimestampedAccountUpdate { /** Time at which the message was generated */ ts: Date | undefined; /** Account update */ accountUpdate: AccountUpdate | undefined; } export interface SubscribeTransactionUpdatesRequest { } export interface SubscribeBlockUpdatesRequest { } export interface MaybePartialAccountUpdate { partialAccountUpdate?: PartialAccountUpdate | undefined; hb?: Heartbeat | undefined; } export interface Heartbeat { } export interface EmptyRequest { } export interface BlockUpdate { slot: number; blockhash: string; rewards: Reward[]; blockTime: Date | undefined; blockHeight?: number | undefined; executedTransactionCount?: number | undefined; entryCount?: number | undefined; } export interface TimestampedBlockUpdate { /** Time at which the message was generated */ ts: Date | undefined; /** Block contents */ blockUpdate: BlockUpdate | undefined; } export interface TransactionUpdate { slot: number; signature: string; isVote: boolean; txIdx: number; tx: ConfirmedTransaction | undefined; } export interface TimestampedTransactionUpdate { ts: Date | undefined; transaction: TransactionUpdate | undefined; } export interface SubscribeSlotUpdateRequest { } export interface SubscribeAccountUpdatesRequest { accounts: Uint8Array[]; } export interface SubscribeProgramsUpdatesRequest { programs: Uint8Array[]; } export interface SubscribePartialAccountUpdatesRequest { /** If true, will not stream vote account updates. */ skipVoteAccounts: boolean; } export interface GetHeartbeatIntervalResponse { heartbeatIntervalMs: number; } export declare const PartialAccountUpdate: { encode(message: PartialAccountUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): PartialAccountUpdate; fromJSON(object: any): PartialAccountUpdate; toJSON(message: PartialAccountUpdate): unknown; create<I extends Exact<DeepPartial<PartialAccountUpdate>, I>>(base?: I): PartialAccountUpdate; fromPartial<I extends Exact<DeepPartial<PartialAccountUpdate>, I>>(object: I): PartialAccountUpdate; }; export declare const AccountUpdate: { encode(message: AccountUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): AccountUpdate; fromJSON(object: any): AccountUpdate; toJSON(message: AccountUpdate): unknown; create<I extends Exact<DeepPartial<AccountUpdate>, I>>(base?: I): AccountUpdate; fromPartial<I extends Exact<DeepPartial<AccountUpdate>, I>>(object: I): AccountUpdate; }; export declare const SlotUpdate: { encode(message: SlotUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): SlotUpdate; fromJSON(object: any): SlotUpdate; toJSON(message: SlotUpdate): unknown; create<I extends Exact<DeepPartial<SlotUpdate>, I>>(base?: I): SlotUpdate; fromPartial<I extends Exact<DeepPartial<SlotUpdate>, I>>(object: I): SlotUpdate; }; export declare const TimestampedSlotUpdate: { encode(message: TimestampedSlotUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): TimestampedSlotUpdate; fromJSON(object: any): TimestampedSlotUpdate; toJSON(message: TimestampedSlotUpdate): unknown; create<I extends Exact<DeepPartial<TimestampedSlotUpdate>, I>>(base?: I): TimestampedSlotUpdate; fromPartial<I extends Exact<DeepPartial<TimestampedSlotUpdate>, I>>(object: I): TimestampedSlotUpdate; }; export declare const TimestampedAccountUpdate: { encode(message: TimestampedAccountUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): TimestampedAccountUpdate; fromJSON(object: any): TimestampedAccountUpdate; toJSON(message: TimestampedAccountUpdate): unknown; create<I extends Exact<DeepPartial<TimestampedAccountUpdate>, I>>(base?: I): TimestampedAccountUpdate; fromPartial<I extends Exact<DeepPartial<TimestampedAccountUpdate>, I>>(object: I): TimestampedAccountUpdate; }; export declare const SubscribeTransactionUpdatesRequest: { encode(_: SubscribeTransactionUpdatesRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): SubscribeTransactionUpdatesRequest; fromJSON(_: any): SubscribeTransactionUpdatesRequest; toJSON(_: SubscribeTransactionUpdatesRequest): unknown; create<I extends Exact<DeepPartial<SubscribeTransactionUpdatesRequest>, I>>(base?: I): SubscribeTransactionUpdatesRequest; fromPartial<I extends Exact<DeepPartial<SubscribeTransactionUpdatesRequest>, I>>(_: I): SubscribeTransactionUpdatesRequest; }; export declare const SubscribeBlockUpdatesRequest: { encode(_: SubscribeBlockUpdatesRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): SubscribeBlockUpdatesRequest; fromJSON(_: any): SubscribeBlockUpdatesRequest; toJSON(_: SubscribeBlockUpdatesRequest): unknown; create<I extends Exact<DeepPartial<SubscribeBlockUpdatesRequest>, I>>(base?: I): SubscribeBlockUpdatesRequest; fromPartial<I extends Exact<DeepPartial<SubscribeBlockUpdatesRequest>, I>>(_: I): SubscribeBlockUpdatesRequest; }; export declare const MaybePartialAccountUpdate: { encode(message: MaybePartialAccountUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): MaybePartialAccountUpdate; fromJSON(object: any): MaybePartialAccountUpdate; toJSON(message: MaybePartialAccountUpdate): unknown; create<I extends Exact<DeepPartial<MaybePartialAccountUpdate>, I>>(base?: I): MaybePartialAccountUpdate; fromPartial<I extends Exact<DeepPartial<MaybePartialAccountUpdate>, I>>(object: I): MaybePartialAccountUpdate; }; export declare const Heartbeat: { encode(_: Heartbeat, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): Heartbeat; fromJSON(_: any): Heartbeat; toJSON(_: Heartbeat): unknown; create<I extends Exact<DeepPartial<Heartbeat>, I>>(base?: I): Heartbeat; fromPartial<I extends Exact<DeepPartial<Heartbeat>, I>>(_: I): Heartbeat; }; export declare const EmptyRequest: { encode(_: EmptyRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): EmptyRequest; fromJSON(_: any): EmptyRequest; toJSON(_: EmptyRequest): unknown; create<I extends Exact<DeepPartial<EmptyRequest>, I>>(base?: I): EmptyRequest; fromPartial<I extends Exact<DeepPartial<EmptyRequest>, I>>(_: I): EmptyRequest; }; export declare const BlockUpdate: { encode(message: BlockUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): BlockUpdate; fromJSON(object: any): BlockUpdate; toJSON(message: BlockUpdate): unknown; create<I extends Exact<DeepPartial<BlockUpdate>, I>>(base?: I): BlockUpdate; fromPartial<I extends Exact<DeepPartial<BlockUpdate>, I>>(object: I): BlockUpdate; }; export declare const TimestampedBlockUpdate: { encode(message: TimestampedBlockUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): TimestampedBlockUpdate; fromJSON(object: any): TimestampedBlockUpdate; toJSON(message: TimestampedBlockUpdate): unknown; create<I extends Exact<DeepPartial<TimestampedBlockUpdate>, I>>(base?: I): TimestampedBlockUpdate; fromPartial<I extends Exact<DeepPartial<TimestampedBlockUpdate>, I>>(object: I): TimestampedBlockUpdate; }; export declare const TransactionUpdate: { encode(message: TransactionUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): TransactionUpdate; fromJSON(object: any): TransactionUpdate; toJSON(message: TransactionUpdate): unknown; create<I extends Exact<DeepPartial<TransactionUpdate>, I>>(base?: I): TransactionUpdate; fromPartial<I extends Exact<DeepPartial<TransactionUpdate>, I>>(object: I): TransactionUpdate; }; export declare const TimestampedTransactionUpdate: { encode(message: TimestampedTransactionUpdate, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): TimestampedTransactionUpdate; fromJSON(object: any): TimestampedTransactionUpdate; toJSON(message: TimestampedTransactionUpdate): unknown; create<I extends Exact<DeepPartial<TimestampedTransactionUpdate>, I>>(base?: I): TimestampedTransactionUpdate; fromPartial<I extends Exact<DeepPartial<TimestampedTransactionUpdate>, I>>(object: I): TimestampedTransactionUpdate; }; export declare const SubscribeSlotUpdateRequest: { encode(_: SubscribeSlotUpdateRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): SubscribeSlotUpdateRequest; fromJSON(_: any): SubscribeSlotUpdateRequest; toJSON(_: SubscribeSlotUpdateRequest): unknown; create<I extends Exact<DeepPartial<SubscribeSlotUpdateRequest>, I>>(base?: I): SubscribeSlotUpdateRequest; fromPartial<I extends Exact<DeepPartial<SubscribeSlotUpdateRequest>, I>>(_: I): SubscribeSlotUpdateRequest; }; export declare const SubscribeAccountUpdatesRequest: { encode(message: SubscribeAccountUpdatesRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): SubscribeAccountUpdatesRequest; fromJSON(object: any): SubscribeAccountUpdatesRequest; toJSON(message: SubscribeAccountUpdatesRequest): unknown; create<I extends Exact<DeepPartial<SubscribeAccountUpdatesRequest>, I>>(base?: I): SubscribeAccountUpdatesRequest; fromPartial<I extends Exact<DeepPartial<SubscribeAccountUpdatesRequest>, I>>(object: I): SubscribeAccountUpdatesRequest; }; export declare const SubscribeProgramsUpdatesRequest: { encode(message: SubscribeProgramsUpdatesRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): SubscribeProgramsUpdatesRequest; fromJSON(object: any): SubscribeProgramsUpdatesRequest; toJSON(message: SubscribeProgramsUpdatesRequest): unknown; create<I extends Exact<DeepPartial<SubscribeProgramsUpdatesRequest>, I>>(base?: I): SubscribeProgramsUpdatesRequest; fromPartial<I extends Exact<DeepPartial<SubscribeProgramsUpdatesRequest>, I>>(object: I): SubscribeProgramsUpdatesRequest; }; export declare const SubscribePartialAccountUpdatesRequest: { encode(message: SubscribePartialAccountUpdatesRequest, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): SubscribePartialAccountUpdatesRequest; fromJSON(object: any): SubscribePartialAccountUpdatesRequest; toJSON(message: SubscribePartialAccountUpdatesRequest): unknown; create<I extends Exact<DeepPartial<SubscribePartialAccountUpdatesRequest>, I>>(base?: I): SubscribePartialAccountUpdatesRequest; fromPartial<I extends Exact<DeepPartial<SubscribePartialAccountUpdatesRequest>, I>>(object: I): SubscribePartialAccountUpdatesRequest; }; export declare const GetHeartbeatIntervalResponse: { encode(message: GetHeartbeatIntervalResponse, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): GetHeartbeatIntervalResponse; fromJSON(object: any): GetHeartbeatIntervalResponse; toJSON(message: GetHeartbeatIntervalResponse): unknown; create<I extends Exact<DeepPartial<GetHeartbeatIntervalResponse>, I>>(base?: I): GetHeartbeatIntervalResponse; fromPartial<I extends Exact<DeepPartial<GetHeartbeatIntervalResponse>, I>>(object: I): GetHeartbeatIntervalResponse; }; /** * The following __must__ be assumed: * - Clients may receive data for slots out of order. * - Clients may receive account updates for a given slot out of order. */ export type GeyserService = typeof GeyserService; export declare const GeyserService: { /** Invoke to get the expected heartbeat interval. */ readonly getHeartbeatInterval: { readonly path: "/solana.geyser.Geyser/GetHeartbeatInterval"; readonly requestStream: false; readonly responseStream: false; readonly requestSerialize: (value: EmptyRequest) => Buffer; readonly requestDeserialize: (value: Buffer) => EmptyRequest; readonly responseSerialize: (value: GetHeartbeatIntervalResponse) => Buffer; readonly responseDeserialize: (value: Buffer) => GetHeartbeatIntervalResponse; }; /** * Subscribes to account updates in the accounts database; additionally pings clients with empty heartbeats. * Upon initially connecting the client can expect a `highest_write_slot` set in the http headers. * Subscribe to account updates */ readonly subscribeAccountUpdates: { readonly path: "/solana.geyser.Geyser/SubscribeAccountUpdates"; readonly requestStream: false; readonly responseStream: true; readonly requestSerialize: (value: SubscribeAccountUpdatesRequest) => Buffer; readonly requestDeserialize: (value: Buffer) => SubscribeAccountUpdatesRequest; readonly responseSerialize: (value: TimestampedAccountUpdate) => Buffer; readonly responseDeserialize: (value: Buffer) => TimestampedAccountUpdate; }; /** * Subscribes to updates given a list of program IDs. When an account update comes in that's owned by a provided * program id, one will receive an update */ readonly subscribeProgramUpdates: { readonly path: "/solana.geyser.Geyser/SubscribeProgramUpdates"; readonly requestStream: false; readonly responseStream: true; readonly requestSerialize: (value: SubscribeProgramsUpdatesRequest) => Buffer; readonly requestDeserialize: (value: Buffer) => SubscribeProgramsUpdatesRequest; readonly responseSerialize: (value: TimestampedAccountUpdate) => Buffer; readonly responseDeserialize: (value: Buffer) => TimestampedAccountUpdate; }; /** * Functions similarly to `SubscribeAccountUpdates`, but consumes less bandwidth. * Returns the highest slot seen thus far in the http headers named `highest-write-slot`. */ readonly subscribePartialAccountUpdates: { readonly path: "/solana.geyser.Geyser/SubscribePartialAccountUpdates"; readonly requestStream: false; readonly responseStream: true; readonly requestSerialize: (value: SubscribePartialAccountUpdatesRequest) => Buffer; readonly requestDeserialize: (value: Buffer) => SubscribePartialAccountUpdatesRequest; readonly responseSerialize: (value: MaybePartialAccountUpdate) => Buffer; readonly responseDeserialize: (value: Buffer) => MaybePartialAccountUpdate; }; /** * Subscribes to slot updates. * Returns the highest slot seen thus far in the http headers named `highest-write-slot`. */ readonly subscribeSlotUpdates: { readonly path: "/solana.geyser.Geyser/SubscribeSlotUpdates"; readonly requestStream: false; readonly responseStream: true; readonly requestSerialize: (value: SubscribeSlotUpdateRequest) => Buffer; readonly requestDeserialize: (value: Buffer) => SubscribeSlotUpdateRequest; readonly responseSerialize: (value: TimestampedSlotUpdate) => Buffer; readonly responseDeserialize: (value: Buffer) => TimestampedSlotUpdate; }; /** Subscribes to transaction updates. */ readonly subscribeTransactionUpdates: { readonly path: "/solana.geyser.Geyser/SubscribeTransactionUpdates"; readonly requestStream: false; readonly responseStream: true; readonly requestSerialize: (value: SubscribeTransactionUpdatesRequest) => Buffer; readonly requestDeserialize: (value: Buffer) => SubscribeTransactionUpdatesRequest; readonly responseSerialize: (value: TimestampedTransactionUpdate) => Buffer; readonly responseDeserialize: (value: Buffer) => TimestampedTransactionUpdate; }; /** Subscribes to block updates. */ readonly subscribeBlockUpdates: { readonly path: "/solana.geyser.Geyser/SubscribeBlockUpdates"; readonly requestStream: false; readonly responseStream: true; readonly requestSerialize: (value: SubscribeBlockUpdatesRequest) => Buffer; readonly requestDeserialize: (value: Buffer) => SubscribeBlockUpdatesRequest; readonly responseSerialize: (value: TimestampedBlockUpdate) => Buffer; readonly responseDeserialize: (value: Buffer) => TimestampedBlockUpdate; }; }; export interface GeyserServer extends UntypedServiceImplementation { /** Invoke to get the expected heartbeat interval. */ getHeartbeatInterval: handleUnaryCall<EmptyRequest, GetHeartbeatIntervalResponse>; /** * Subscribes to account updates in the accounts database; additionally pings clients with empty heartbeats. * Upon initially connecting the client can expect a `highest_write_slot` set in the http headers. * Subscribe to account updates */ subscribeAccountUpdates: handleServerStreamingCall<SubscribeAccountUpdatesRequest, TimestampedAccountUpdate>; /** * Subscribes to updates given a list of program IDs. When an account update comes in that's owned by a provided * program id, one will receive an update */ subscribeProgramUpdates: handleServerStreamingCall<SubscribeProgramsUpdatesRequest, TimestampedAccountUpdate>; /** * Functions similarly to `SubscribeAccountUpdates`, but consumes less bandwidth. * Returns the highest slot seen thus far in the http headers named `highest-write-slot`. */ subscribePartialAccountUpdates: handleServerStreamingCall<SubscribePartialAccountUpdatesRequest, MaybePartialAccountUpdate>; /** * Subscribes to slot updates. * Returns the highest slot seen thus far in the http headers named `highest-write-slot`. */ subscribeSlotUpdates: handleServerStreamingCall<SubscribeSlotUpdateRequest, TimestampedSlotUpdate>; /** Subscribes to transaction updates. */ subscribeTransactionUpdates: handleServerStreamingCall<SubscribeTransactionUpdatesRequest, TimestampedTransactionUpdate>; /** Subscribes to block updates. */ subscribeBlockUpdates: handleServerStreamingCall<SubscribeBlockUpdatesRequest, TimestampedBlockUpdate>; } export interface GeyserClient extends Client { /** Invoke to get the expected heartbeat interval. */ getHeartbeatInterval(request: EmptyRequest, callback: (error: ServiceError | null, response: GetHeartbeatIntervalResponse) => void): ClientUnaryCall; getHeartbeatInterval(request: EmptyRequest, metadata: Metadata, callback: (error: ServiceError | null, response: GetHeartbeatIntervalResponse) => void): ClientUnaryCall; getHeartbeatInterval(request: EmptyRequest, metadata: Metadata, options: Partial<CallOptions>, callback: (error: ServiceError | null, response: GetHeartbeatIntervalResponse) => void): ClientUnaryCall; /** * Subscribes to account updates in the accounts database; additionally pings clients with empty heartbeats. * Upon initially connecting the client can expect a `highest_write_slot` set in the http headers. * Subscribe to account updates */ subscribeAccountUpdates(request: SubscribeAccountUpdatesRequest, options?: Partial<CallOptions>): ClientReadableStream<TimestampedAccountUpdate>; subscribeAccountUpdates(request: SubscribeAccountUpdatesRequest, metadata?: Metadata, options?: Partial<CallOptions>): ClientReadableStream<TimestampedAccountUpdate>; /** * Subscribes to updates given a list of program IDs. When an account update comes in that's owned by a provided * program id, one will receive an update */ subscribeProgramUpdates(request: SubscribeProgramsUpdatesRequest, options?: Partial<CallOptions>): ClientReadableStream<TimestampedAccountUpdate>; subscribeProgramUpdates(request: SubscribeProgramsUpdatesRequest, metadata?: Metadata, options?: Partial<CallOptions>): ClientReadableStream<TimestampedAccountUpdate>; /** * Functions similarly to `SubscribeAccountUpdates`, but consumes less bandwidth. * Returns the highest slot seen thus far in the http headers named `highest-write-slot`. */ subscribePartialAccountUpdates(request: SubscribePartialAccountUpdatesRequest, options?: Partial<CallOptions>): ClientReadableStream<MaybePartialAccountUpdate>; subscribePartialAccountUpdates(request: SubscribePartialAccountUpdatesRequest, metadata?: Metadata, options?: Partial<CallOptions>): ClientReadableStream<MaybePartialAccountUpdate>; /** * Subscribes to slot updates. * Returns the highest slot seen thus far in the http headers named `highest-write-slot`. */ subscribeSlotUpdates(request: SubscribeSlotUpdateRequest, options?: Partial<CallOptions>): ClientReadableStream<TimestampedSlotUpdate>; subscribeSlotUpdates(request: SubscribeSlotUpdateRequest, metadata?: Metadata, options?: Partial<CallOptions>): ClientReadableStream<TimestampedSlotUpdate>; /** Subscribes to transaction updates. */ subscribeTransactionUpdates(request: SubscribeTransactionUpdatesRequest, options?: Partial<CallOptions>): ClientReadableStream<TimestampedTransactionUpdate>; subscribeTransactionUpdates(request: SubscribeTransactionUpdatesRequest, metadata?: Metadata, options?: Partial<CallOptions>): ClientReadableStream<TimestampedTransactionUpdate>; /** Subscribes to block updates. */ subscribeBlockUpdates(request: SubscribeBlockUpdatesRequest, options?: Partial<CallOptions>): ClientReadableStream<TimestampedBlockUpdate>; subscribeBlockUpdates(request: SubscribeBlockUpdatesRequest, metadata?: Metadata, options?: Partial<CallOptions>): ClientReadableStream<TimestampedBlockUpdate>; } export declare const GeyserClient: { new (address: string, credentials: ChannelCredentials, options?: Partial<ClientOptions>): GeyserClient; service: typeof GeyserService; }; type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]>; } : Partial<T>; type KeysOfUnion<T> = T extends T ? keyof T : never; export type Exact<P, I extends P> = P extends Builtin ? P : P & { [K in keyof P]: Exact<P[K], I[K]>; } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never; }; export {};