UNPKG

@dfinity/agent

Version:

JavaScript and TypeScript library to interact with the Internet Computer

163 lines 6.51 kB
import { type Agent, type HttpDetailsResponse } from './agent/index.ts'; import { IDL } from '@dfinity/candid'; import { type PollingOptions } from './polling/index.ts'; import { Principal } from '@dfinity/principal'; import { Certificate, type CreateCertificateOptions } from './certificate.ts'; /** * Configuration to make calls to the Replica. */ export interface CallConfig { /** * An agent to use in this call, otherwise the actor or call will try to discover the * agent to use. */ agent?: Agent; /** * Options for controlling polling behavior. */ pollingOptions?: PollingOptions; /** * The canister ID of this Actor. */ canisterId?: string | Principal; /** * The effective canister ID. */ effectiveCanisterId?: Principal; /** * The nonce to use for this call. This is used to prevent replay attacks. */ nonce?: Uint8Array; } /** * Configuration that can be passed to customize the Actor behaviour. */ export interface ActorConfig extends CallConfig { /** * The Canister ID of this Actor. This is required for an Actor. */ canisterId: string | Principal; /** * An override function for update calls' CallConfig. This will be called on every calls. */ callTransform?(methodName: string, args: unknown[], callConfig: CallConfig): Partial<CallConfig> | void; /** * An override function for query calls' CallConfig. This will be called on every query. */ queryTransform?(methodName: string, args: unknown[], callConfig: CallConfig): Partial<CallConfig> | void; /** * Polyfill for BLS Certificate verification in case wasm is not supported */ blsVerify?: CreateCertificateOptions['blsVerify']; /** * Polling options to use when making update calls. This will override the default DEFAULT_POLLING_OPTIONS. */ pollingOptions?: PollingOptions; } /** * A subclass of an actor. Actor class itself is meant to be a based class. */ export type ActorSubclass<T = Record<string, ActorMethod>> = Actor & T; /** * An actor method type, defined for each methods of the actor service. */ export interface ActorMethod<Args extends unknown[] = unknown[], Ret = unknown> { (...args: Args): Promise<Ret>; withOptions(options: CallConfig): (...args: Args) => Promise<Ret>; } /** * An actor method type, defined for each methods of the actor service. */ export interface ActorMethodWithHttpDetails<Args extends unknown[] = unknown[], Ret = unknown> extends ActorMethod { (...args: Args): Promise<{ httpDetails: HttpDetailsResponse; result: Ret; }>; } /** * An actor method type, defined for each methods of the actor service. */ export interface ActorMethodExtended<Args extends unknown[] = unknown[], Ret = unknown> extends ActorMethod { (...args: Args): Promise<{ certificate?: Certificate; httpDetails?: HttpDetailsResponse; result: Ret; }>; } export type FunctionWithArgsAndReturn<Args extends unknown[] = unknown[], Ret = unknown> = (...args: Args) => Ret; export type ActorMethodMappedWithHttpDetails<T> = { [K in keyof T]: T[K] extends FunctionWithArgsAndReturn<infer Args, infer Ret> ? ActorMethodWithHttpDetails<Args, Ret> : never; }; export type ActorMethodMappedExtended<T> = { [K in keyof T]: T[K] extends FunctionWithArgsAndReturn<infer Args, infer Ret> ? ActorMethodExtended<Args, Ret> : never; }; /** * The mode used when installing a canister. */ export type CanisterInstallMode = { reinstall: null; } | { upgrade: [] | [ { skip_pre_upgrade: [] | [boolean]; } ]; } | { install: null; }; /** * Internal metadata for actors. It's an enhanced version of ActorConfig with * some fields marked as required (as they are defaulted) and canisterId as * a Principal type. */ interface ActorMetadata { service: IDL.ServiceClass; agent?: Agent; config: ActorConfig; } declare const metadataSymbol: unique symbol; export interface CreateActorClassOpts { httpDetails?: boolean; certificate?: boolean; } /** * An actor base class. An actor is an object containing only functions that will * return a promise. These functions are derived from the IDL definition. */ export declare class Actor { /** * Get the Agent class this Actor would call, or undefined if the Actor would use * the default agent (global.ic.agent). * @param actor The actor to get the agent of. */ static agentOf(actor: Actor): Agent | undefined; /** * Get the interface of an actor, in the form of an instance of a Service. * @param actor The actor to get the interface of. */ static interfaceOf(actor: Actor): IDL.ServiceClass; static canisterIdOf(actor: Actor): Principal; static createActorClass(interfaceFactory: IDL.InterfaceFactory, options?: CreateActorClassOpts): ActorConstructor; static createActor<T = Record<string, ActorMethod>>(interfaceFactory: IDL.InterfaceFactory, configuration: ActorConfig): ActorSubclass<T>; /** * Returns an actor with methods that return the http response details along with the result * @param interfaceFactory - the interface factory for the actor * @param configuration - the configuration for the actor * @deprecated - use createActor with actorClassOptions instead */ static createActorWithHttpDetails<T = Record<string, ActorMethod>>(interfaceFactory: IDL.InterfaceFactory, configuration: ActorConfig): ActorSubclass<ActorMethodMappedWithHttpDetails<T>>; /** * Returns an actor with methods that return the http response details along with the result * @param interfaceFactory - the interface factory for the actor * @param configuration - the configuration for the actor * @param actorClassOptions - options for the actor class extended details to return with the result */ static createActorWithExtendedDetails<T = Record<string, ActorMethod>>(interfaceFactory: IDL.InterfaceFactory, configuration: ActorConfig, actorClassOptions?: CreateActorClassOpts): ActorSubclass<ActorMethodMappedExtended<T>>; private [metadataSymbol]; protected constructor(metadata: ActorMetadata); } export type ActorConstructor = new (config: ActorConfig) => ActorSubclass; export declare const ACTOR_METHOD_WITH_HTTP_DETAILS = "http-details"; export declare const ACTOR_METHOD_WITH_CERTIFICATE = "certificate"; export {}; //# sourceMappingURL=actor.d.ts.map