import Decimal from 'decimal.js'; import { ICryptoBytes, IAccount } from './auth'; import { IQueryClient } from './query'; /** * HttpEndpoint is a type that represents an HTTP endpoint. */ export interface HttpEndpoint { url: string; headers: Record; } export declare function isHttpEndpoint(endpoint: unknown): endpoint is HttpEndpoint; export interface Price { amount: Decimal; denom: string; } /** * IUniSigner is a generic interface for signing and broadcasting transactions. * It is used to abstract the signing and broadcasting process for different chains. * @template TAccount - account type * @template TSignArgs - arguments for sign method * @template TBroadcastOpts - options for broadcasting a transaction * @template TBroadcastResponse - response type after broadcasting a transaction */ export interface IUniSigner = IBroadcastResult, TQueryClient extends IQueryClient = IQueryClient> { queryClient: TQueryClient; getAccounts(): Promise; signArbitrary(data: Uint8Array, index?: number): Promise; sign(args: TSignArgs): Promise>; broadcast(signed: ISigned, options?: TBroadcastOpts): Promise; signAndBroadcast(args: TSignArgs, options?: TBroadcastOpts): Promise; broadcastArbitrary(data: Uint8Array, options?: TBroadcastOpts): Promise; } export interface ISigned { signature: ICryptoBytes; broadcast(options?: BroadcastOpts): Promise; } export interface IBroadcastResult { transactionHash: string; rawResponse: unknown; broadcastResponse: unknown; wait: () => Promise; } export type DeliverTxResponse = IBroadcastResult; export interface Attribute { key: string; value: string; index?: boolean; } export interface Event { type: string; attributes: readonly Attribute[]; }