UNPKG

raiden-ts

Version:

Raiden Light Client Typescript/Javascript SDK

73 lines 3.07 kB
import { AddressZero } from '@ethersproject/constants'; import { getNetwork } from '@ethersproject/networks'; import * as t from 'io-ts'; import { ConfirmableAction } from './actions'; import { Channel } from './channels/state'; import { PartialRaidenConfig } from './config'; import { IOU, ServicesValidityMap } from './services/types'; import { TransferState } from './transfers/state'; import { RaidenMatrixSetup } from './transport/state'; import { ContractsInfo } from './types'; import { Address, Signed } from './utils/types'; // types const _RaidenState = t.readonly(t.type({ address: Address, chainId: t.number, contracts: ContractsInfo, blockNumber: t.number, config: PartialRaidenConfig, channels: t.readonly(t.record(t.string /* ChannelKey */, Channel)), oldChannels: t.readonly(t.record(t.string /* ChannelUniqueKey */, Channel)), tokens: t.readonly(t.record(t.string /* token: Address */, Address)), transport: t.readonly(t.partial({ server: t.string, setup: RaidenMatrixSetup })), transfers: t.readonly(t.record(t.string /*: key: TransferKey */, TransferState)), iou: t.readonly(t.record(t.string /* tokenNetwork: Address */, t.record(t.string /* service: Address */, Signed(IOU)))), pendingTxs: t.readonlyArray(ConfirmableAction), services: ServicesValidityMap, }), 'RaidenState'); export const RaidenState = _RaidenState; /** * Create an initial RaidenState from common parameters (including default config) * * @param obj - Object containing common parameters for state * @param obj.network - ether's Network object for the current blockchain * @param obj.address - current account's address * @param obj.contractsInfo - ContractsInfo mapping * @param overrides - A partial object to overwrite top-level properties of the returned config * @returns A full config object */ export function makeInitialState({ network, address, contractsInfo, }, overrides = {}) { return { address, chainId: network.chainId, contracts: contractsInfo, blockNumber: contractsInfo.TokenNetworkRegistry.block_number, channels: {}, oldChannels: {}, tokens: {}, transport: {}, transfers: {}, iou: {}, pendingTxs: [], services: {}, config: {}, ...overrides, }; } /** * state constant used as default state reducer parameter only. * To build an actual initial state at runtime, use [[makeInitialState]] instead. */ export const initialState = makeInitialState({ network: getNetwork('unspecified'), address: AddressZero, contractsInfo: { TokenNetworkRegistry: { address: AddressZero, block_number: 0 }, ServiceRegistry: { address: AddressZero, block_number: 0 }, UserDeposit: { address: AddressZero, block_number: 0 }, SecretRegistry: { address: AddressZero, block_number: 0 }, MonitoringService: { address: AddressZero, block_number: 0 }, OneToN: { address: AddressZero, block_number: 0 }, }, }); //# sourceMappingURL=state.js.map