import { Models } from '@open-rights-exchange/chain-js'; import { EosPublicKey, EosAccountKeys, EosKeyPair } from './cryptoModels'; export type EosEntityName = string & Models.ChainEntityNameBrand; export type EosDate = string & Models.ChainDateBrand; export type EosAsset = string & Models.ChainAssetBrand; export type EosSymbol = string & Models.ChainSymbolBrand; /** A simple container for account, permission, and public key */ export type EosAuthorization = { account: EosEntityName; permission: EosEntityName; publicKey?: EosPublicKey; }; /** A container for account, permission name, and full permission stucture */ export type EosAuthorizationPerm = { account: EosEntityName; permission: EosEntityName; requiredAuthorization?: EosRequiredAuthorization; }; /** Chain configuation for creating a new connection */ export type EosChainSettings = { createEscrowContract?: string; communicationSettings?: Models.ChainSettingsCommunicationSettings; defaultTransactionSettings?: { blocksBehind: number; expireSeconds: number; }; fetch?: any; monitorType?: EosChainMonitorType; monitorUrl?: URL; unusedAccountPublicKey?: string; }; /** Chain urls and related details used to connect to chain */ export type EosChainEndpoint = { /** api endpoint url - including http(s):// prefix */ url: string; /** Options are name/value pairs used to configure chain endpoint */ options?: { /** Array of headers to be included in HTTP requests to chain endpoint * e.g. options.headers = [{"Authorization":"Bearer..."}] */ headers?: [{ [key: string]: string; }]; }; /** Between 0 and 1 - 0 is not responding, 1 is very fast */ health?: number; }; /** Monitor services listenting to the chain */ export declare enum EosChainMonitorType { NONE = 0, DFUSE = 1, DEMUX = 2 } export type EosPermissionSimplified = { name: EosEntityName; parent: EosEntityName; publicKey: EosPublicKey; publicKeyWeight?: number; threshold?: number; }; export type EosGeneratedKeys = { accountKeys: EosAccountKeys; permissionKeys: EosGeneratedPermissionKeys[]; }; export type EosGeneratedPermissionKeys = { permissionName: EosEntityName; keyPair: EosKeyPair; }; export type EosNewKeysOptions = { password: string; encryptionOptions?: Models.ModelsCryptoAes.AesEncryptionOptions; }; export type EosPermission = { name: EosEntityName; parent: EosEntityName | ''; firstPublicKey: EosPublicKey; firstPublicKeyMeetsThreshold: boolean; requiredAuth: EosRequiredAuthorization; }; export type PermissionMapCache = { accountName: EosEntityName; permissionName: EosEntityName; authorization: EosRequiredAuthorization; }; /** EOS Data Structure for the Required Authorization for a permission - i.e. includes required accounts, permissions, and weights */ export type EosRequiredAuthorization = { threshold: number; accounts: { permission: { actor: EosEntityName; permission: EosEntityName; }; /** ChainJS spesific property, generated by fetchAuthorizationsRequired * to help missingSignatures to check if signatures satisfies authRequirement of * provided accountName/permissions. * NOTE: Nested accountName/permissions are not supported * (this means accountName/permissions can not contation accounts:[] in its subAuth) */ subAuth?: EosRequiredAuthorization; weight: number; }[]; keys: { key: EosPublicKey; weight: number; }[]; waits: { waitSec: number; weight: number; }[]; }; /** Multisig options required to create a multisignature account for EOS */ export type EosMultisigCreateAccountOptions = { owner: MsigAuthOptions | EosPublicKey; active: MsigAuthOptions | EosPublicKey; }; export type MsigAuthOptions = { threshold: number; accounts?: MsigChainAccount[]; keys?: MsigPublicKeys[]; }; export type MsigChainAccount = { accountName: EosEntityName; permission: EosEntityName; weight: number; }; export type MsigPublicKeys = { key: EosPublicKey; weight: number; };