{"version":3,"file":"ashetm-ng-ether.mjs","sources":["../../../../packages/ng-ether/src/lib/ether-contract-custom.class.ts","../../../../packages/ng-ether/src/lib/ether-contract-fn-async.pipe.ts","../../../../packages/ng-ether/src/lib/ether-contract.class.ts","../../../../packages/ng-ether/src/lib/ether-service.class.ts","../../../../packages/ng-ether/src/lib/ether-network-service.class.ts","../../../../packages/ng-ether/src/lib/ether-provider.class.ts","../../../../packages/ng-ether/src/lib/ether-signer.class.ts","../../../../packages/ng-ether/src/lib/ether.enum.ts","../../../../packages/ng-ether/src/lib/ether.token.ts","../../../../packages/ng-ether/src/lib/ether-network.service.ts","../../../../packages/ng-ether/src/lib/ether-transaction-ref.class.ts","../../../../packages/ng-ether/src/lib/ether-transaction-service.class.ts","../../../../packages/ng-ether/src/lib/ether-transaction.service.ts","../../../../packages/ng-ether/src/lib/ether-wallet-service.class.ts","../../../../packages/ng-ether/src/lib/ether.util.ts","../../../../packages/ng-ether/src/lib/ether-wallet.service.ts","../../../../packages/ng-ether/src/lib/ether-root.module.ts","../../../../packages/ng-ether/src/lib/ether-contract.decorator.ts","../../../../packages/ng-ether/src/lib/ether-network.enum.ts","../../../../packages/ng-ether/src/lib/ether.module.ts","../../../../packages/ng-ether/src/lib/ether-test.module.ts","../../../../packages/ng-ether/src/ashetm-ng-ether.ts"],"sourcesContent":["import { TContractFunction, TCustomContractFunction } from \"./ether-contract-custom.type\";\r\n\r\n\r\nexport abstract class ACustomContract {\r\n\r\n  readonly [key: string]: TContractFunction;\r\n\r\n  constructor(protected readonly contract: TCustomContractFunction) { }\r\n\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable, Subscribable } from 'rxjs';\r\n\r\n\r\n@Pipe({\r\n  name: 'etherContractFnAsync'\r\n})\r\nexport class EtherContractFnAsyncPipe implements PipeTransform {\r\n\r\n  constructor(private readonly _changeDetectionRef: ChangeDetectorRef) { }\r\n\r\n  transform(fn: (...args: any[]) => Observable<any> | Subscribable<any> | Promise<any>, ...args: any[]): any {\r\n    return new AsyncPipe(this._changeDetectionRef).transform(fn(args));\r\n  }\r\n\r\n}\r\n","import { ethers } from \"ethers\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport abstract class AEtherContract extends ethers.Contract { }\r\n","import { NgZone } from '@angular/core';\r\nimport { Observable, OperatorFunction, race, Subscriber } from 'rxjs';\r\nimport { distinctUntilKeyChanged, map, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\nimport { TEtherNetwork, TEtherNetworkChange } from './ether-network.type';\r\nimport { AEtherProvider } from './ether-provider.class';\r\nimport { AEtherSigner } from './ether-signer.class';\r\n\r\n\r\nexport abstract class AEtherService {\r\n\r\n  protected readonly _accountChange$: Observable<string[]>\r\n    = new Observable<string[]>((subscriber: Subscriber<string[]>) => {\r\n      type TObjectOnEventAccountsChanged = Record<\r\n        'on',\r\n        (eventNetwork: 'accountsChanged', fn: (accounts: string[]) => void) => void\r\n      >;\r\n\r\n      this._ngZone.run(async () => {\r\n        const firstListAccounts: string[] = await this._aEtherProvider.listAccounts();\r\n\r\n        subscriber.next(firstListAccounts);\r\n        (this._aEtherProvider as unknown as Record<'provider', TObjectOnEventAccountsChanged>).provider\r\n          .on('accountsChanged', (accounts: string[]) => {\r\n            subscriber.next(accounts);\r\n          });\r\n      });\r\n    }).pipe(\r\n      distinctUntilKeyChanged(0),\r\n      shareReplay(1),\r\n    );\r\n  protected readonly _networkChange$: Observable<TEtherNetworkChange>\r\n    = new Observable<TEtherNetworkChange>((\r\n      subscriber: Subscriber<TEtherNetworkChange>\r\n    ) => {\r\n      type TObjectOnEventNetwork = Record<\r\n        'on',\r\n        (eventNetwork: 'network', fn: (\r\n          newNetwork: TEtherNetwork,\r\n          oldNetwork?: TEtherNetwork\r\n        ) => void) => void\r\n      >;\r\n\r\n      this._ngZone.run(() => (this._aEtherProvider as TObjectOnEventNetwork).on('network', (\r\n        newNetwork: TEtherNetwork,\r\n        oldNetwork?: TEtherNetwork\r\n      ) => {\r\n        subscriber.next({\r\n          newNetwork,\r\n          oldNetwork\r\n        })\r\n      }));\r\n    }).pipe(shareReplay(1));\r\n\r\n  constructor(\r\n    protected readonly _ngZone: NgZone,\r\n    protected readonly _aEtherProvider: AEtherProvider,\r\n    protected readonly _aEtherSigner: AEtherSigner\r\n  ) { }\r\n\r\n  protected _onAccountOrNetworkChange(): Observable<string[] | TEtherNetworkChange> {\r\n    return race(\r\n      this._accountChange$,\r\n      this._networkChange$\r\n    );\r\n  }\r\n\r\n  protected _switchMapToAccount<T> (index: number): OperatorFunction<T, string> {\r\n    return (source: Observable<T>) => source.pipe(\r\n      switchMap((_: T) => this._accountChange$),\r\n      map((accounts: string[]) => accounts[index])\r\n    );\r\n  }\r\n\r\n}\r\n","import { Observable } from \"rxjs\";\r\n\r\nimport { AEtherService } from \"./ether-service.class\";\r\nimport { TEtherNetwork, TEtherNetworkChange, TEtherNetworkInfoChainId } from './ether-network.type';\r\nimport { TEtherBigNumber, TEtherError } from \"./ether.type\";\r\n\r\n\r\nexport abstract class AEtherNetworkService extends AEtherService {\r\n\r\n  abstract readonly blockNumber$: Observable<number>;\r\n  abstract readonly gasFee$: Observable<TEtherBigNumber>;\r\n  abstract readonly network$: Observable<TEtherNetwork>;\r\n  abstract readonly price$: Observable<number>;\r\n\r\n  abstract addNetwork(newNetwork: TEtherNetwork): Observable<true | TEtherError>;\r\n  abstract onNetworkChange(): Observable<TEtherNetworkChange>;\r\n  abstract onNetworkChange(fn: (newNetwork: TEtherNetwork, oldNetwork?: TEtherNetwork) => void): void;\r\n  abstract switchNetwork(chainId: TEtherNetworkInfoChainId): Observable<true | TEtherError>;\r\n\r\n}\r\n","import { ethers } from \"ethers\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport abstract class AEtherProvider extends ethers.providers.Web3Provider { }\r\n","import { ethers } from \"ethers\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport abstract class AEtherSigner extends ethers.providers.JsonRpcSigner { }\r\n","\r\nexport enum EEtherEventWallet {\r\n  ADD_ETHEREUM_CHAIN = 'wallet_addEthereumChain',\r\n  SWITCH_ETHEREUM_CHAIN = 'wallet_switchEthereumChain'\r\n}\r\n\r\nexport enum EEtherInstance {\r\n  NO_STATIC_FOR_ROOT_METHOD_INVOKED = 0,\r\n  FOR_ROOT\r\n}\r\n\r\n// export enum EEtherNetwork {\r\n//   GOERLI = 'Goerli',\r\n//   KOVAN = 'Kovan',\r\n//   LOCALHOST = 'Localhost',\r\n//   MAIN = 'Main',\r\n//   RINKEBY = 'Rinkeby',\r\n//   ROPSTAN = 'Ropsten'\r\n// }\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nimport { EEtherInstance/*, EEtherNetwork*/ } from \"./ether.enum\";\r\nimport { TEtherConfigurationRoot } from \"./ether.type\";\r\n// import { TEtherSupportedNetwork } from \"./ether.type\";\r\n\r\n\r\nexport const ETHER_TOKEN: InjectionToken<any>\r\n  = new InjectionToken<any>('ETHER_TOKEN', {\r\n    factory: () => (window as any).ethereum,\r\n    providedIn: 'root'\r\n  });\r\nexport const ETHER_TOKEN_ABI: InjectionToken<TEtherConfigurationRoot['abi']>\r\n  = new InjectionToken<TEtherConfigurationRoot['abi']>('ETHER_TOKEN_ABI');\r\n\r\nexport const ETHER_TOKEN_ADDRESS_CONTRACT: InjectionToken<TEtherConfigurationRoot['addressContract']>\r\n  = new InjectionToken<TEtherConfigurationRoot['addressContract']>('ETHER_TOKEN_ADDRESS_CONTRACT');\r\n\r\nexport const ETHER_TOKEN_INSTANCE: InjectionToken<EEtherInstance>\r\n  = new InjectionToken<EEtherInstance>('ETHER_TOKEN_INSTANCE');\r\n\r\nexport const ETHER_TOKEN_IS_METAMASK_WALLET: InjectionToken<boolean>\r\n= new InjectionToken<boolean>('ETHER_TOKEN_IS_METAMASK_WALLET');\r\n\r\nexport const ETHER_TOKEN_IS_WALLET_INSTALLED: InjectionToken<boolean>\r\n  = new InjectionToken<boolean>('ETHER_TOKEN_IS_WALLET_INSTALLED');\r\n\r\nexport const ETHER_TOKEN_NETWORK_ID: InjectionToken<TEtherConfigurationRoot['networkId']>\r\n  = new InjectionToken<TEtherConfigurationRoot['networkId']>('ETHER_TOKEN_NETWORK_ID');\r\n\r\n// export const ETHER_TOKEN_NETWORKS: InjectionToken<TEtherSupportedNetwork>\r\n//   = new InjectionToken<TEtherSupportedNetwork>('ETHER_TOKEN_SUPPORTED_NETWORKS', {\r\n//     factory:    () => Object.freeze({\r\n//       0x1:    EEtherNetwork.MAIN,\r\n//       0x2a:   EEtherNetwork.KOVAN,\r\n//       0x3:    EEtherNetwork.ROPSTAN,\r\n//       0x4:    EEtherNetwork.RINKEBY,\r\n//       0x5:    EEtherNetwork.GOERLI,\r\n//       0x539:  EEtherNetwork.LOCALHOST\r\n//     }),\r\n//     providedIn: 'root'\r\n//   });\r\n","import { Inject, Injectable, NgZone, OnDestroy } from '@angular/core';\r\nimport { interval, Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nimport { AEtherNetworkService } from './ether-network-service.class';\r\nimport { AEtherProvider } from './ether-provider.class';\r\nimport { AEtherSigner } from './ether-signer.class';\r\nimport { TEtherNetwork, TEtherNetworkChange, TEtherNetworkInfoChainId } from './ether-network.type';\r\nimport { EEtherEventWallet } from './ether.enum';\r\nimport { ETHER_TOKEN } from './ether.token';\r\nimport { TEtherBigNumber, TEtherError } from './ether.type';\r\n\r\n\r\n@Injectable()\r\nexport class EtherNetworkService extends AEtherNetworkService implements OnDestroy {\r\n\r\n  readonly blockNumber$: Observable<number>\r\n    = this._onAccountOrNetworkChange()\r\n      .pipe(switchMap((_: string[] | TEtherNetworkChange) => this._aEtherProvider.getBlockNumber()));\r\n  readonly gasFee$: Observable<TEtherBigNumber>\r\n    = this._onAccountOrNetworkChange()\r\n      .pipe(switchMap(() => interval(1000).pipe(\r\n        switchMap((_: number) => this._aEtherProvider.getGasPrice()),\r\n        distinctUntilChanged((\r\n          previousValue: TEtherBigNumber,\r\n          nextValue: TEtherBigNumber\r\n        ) => previousValue.toString() === nextValue.toString())\r\n      )));\r\n  readonly network$: Observable<TEtherNetwork>\r\n    = this.onNetworkChange()\r\n      .pipe(switchMap((_: TEtherNetworkChange) => this._aEtherProvider.getNetwork()));\r\n  readonly price$: Observable<number>\r\n    = this._onAccountOrNetworkChange()\r\n      .pipe(switchMap((_: string[] | TEtherNetworkChange) => this._aEtherProvider.getEtherPrice()));\r\n\r\n  private readonly _destroySubject: Subject<void> = new Subject<void>();\r\n\r\n  constructor(\r\n    @Inject(ETHER_TOKEN)\r\n      private readonly _ethereum: any,\r\n    protected readonly _ngZone: NgZone,\r\n    protected readonly _aEtherProvider: AEtherProvider,\r\n    protected readonly _aEtherSigner: AEtherSigner\r\n  ) {\r\n    super(_ngZone, _aEtherProvider, _aEtherSigner);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._destroySubject.next();\r\n    this._destroySubject.complete();\r\n  }\r\n\r\n  addNetwork(newNetwork: TEtherNetwork): Observable<true | TEtherError> {\r\n    const subject: Subject<true | TEtherError> = new ReplaySubject<true | TEtherError>(1);\r\n\r\n    this._ethereum.request({\r\n      method: EEtherEventWallet.ADD_ETHEREUM_CHAIN,\r\n      params: [newNetwork]\r\n    }).then(() => {\r\n      subject.next(true);\r\n    }).catch(subject.error);\r\n\r\n    return subject.asObservable();\r\n  }\r\n\r\n  onNetworkChange(): Observable<TEtherNetworkChange>;\r\n  onNetworkChange(fn: (newNetwork: TEtherNetwork, oldNetwork?: TEtherNetwork) => void): void;\r\n  onNetworkChange(fn?: (newNetwork: TEtherNetwork, oldNetwork?: TEtherNetwork) => void): void | Observable<TEtherNetworkChange> {\r\n    if(!fn) {\r\n      return this._networkChange$;\r\n    }\r\n\r\n    this._networkChange$.pipe(takeUntil(this._destroySubject))\r\n      .subscribe({\r\n        next: ({\r\n          newNetwork,\r\n          oldNetwork\r\n        }: TEtherNetworkChange) => fn(newNetwork, oldNetwork)\r\n      });\r\n  }\r\n\r\n  switchNetwork(chainId: TEtherNetworkInfoChainId): Observable<true | TEtherError> {\r\n    const subject: Subject<true | TEtherError> = new ReplaySubject<true | TEtherError>(1);\r\n\r\n    this._ethereum.request({\r\n      method: EEtherEventWallet.SWITCH_ETHEREUM_CHAIN,\r\n      params: [{ chainId: `${chainId}`.startsWith('0x') ? chainId : `0x${chainId}` }]\r\n    }).then(() => {\r\n      subject.next(true);\r\n    }).catch(subject.error);\r\n\r\n    return subject.asObservable();\r\n  }\r\n\r\n}\r\n","import { ethers } from \"ethers\";\r\nimport { from, Observable } from \"rxjs\";\r\n\r\nimport { AEtherSigner } from \"./ether-signer.class\";\r\nimport { TEtherTransactionRequest, TEtherTransactionResponse } from \"./ether-transaction.type\";\r\n\r\n\r\nexport class EtherTransactionRef {\r\n\r\n  constructor(\r\n    private readonly _aEtherSigner: AEtherSigner,\r\n    private readonly _accountAddress: string\r\n  ) { }\r\n\r\n  sendEth(amount: number): Observable<TEtherTransactionResponse> {\r\n    const ethValue: string = ethers.utils.parseEther(amount + '').toString();\r\n\r\n    return this._send(ethValue);\r\n  }\r\n\r\n  sendGWei(amount: number): Observable<TEtherTransactionResponse> {\r\n    const gweiValue: string = ethers.utils.formatUnits(amount + '', 'gwei');\r\n\r\n    return this._send(gweiValue);\r\n  }\r\n\r\n  sendWei(amount: number): Observable<TEtherTransactionResponse> {\r\n    const weiValue: string = amount + '';\r\n\r\n    return this._send(weiValue);\r\n  }\r\n\r\n  private _send(value: string): Observable<TEtherTransactionResponse> {\r\n    const transaction: TEtherTransactionRequest = {\r\n      chainId: this._aEtherSigner.getChainId(),\r\n      from: this._aEtherSigner.getAddress(),\r\n      to: this._accountAddress,\r\n      value\r\n    };\r\n\r\n    return from(this._aEtherSigner.sendTransaction(transaction));\r\n  }\r\n\r\n}\r\n","import { AEtherService } from \"./ether-service.class\";\r\nimport { EtherTransactionRef } from \"./ether-transaction-ref.class\";\r\n\r\n\r\nexport abstract class AEtherTransactionService extends AEtherService {\r\n\r\n  abstract prepareTransaction(addressWallet: string): EtherTransactionRef;\r\n\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\n\r\nimport { AEtherProvider } from './ether-provider.class';\r\nimport { AEtherSigner } from './ether-signer.class';\r\nimport { EtherTransactionRef } from './ether-transaction-ref.class';\r\nimport { AEtherTransactionService } from './ether-transaction-service.class';\r\n\r\n\r\n@Injectable()\r\nexport class EtherTransactionService extends AEtherTransactionService {\r\n\r\n  constructor(\r\n    protected readonly _ngZone: NgZone,\r\n    protected readonly _aEtherProvider: AEtherProvider,\r\n    protected readonly _aEtherSigner: AEtherSigner\r\n  ) {\r\n    super(_ngZone, _aEtherProvider, _aEtherSigner);\r\n  }\r\n\r\n  prepareTransaction(addressWallet: string): EtherTransactionRef {\r\n    return new EtherTransactionRef(this._aEtherSigner, addressWallet);\r\n  }\r\n\r\n}\r\n","import { Observable } from \"rxjs\";\r\n\r\nimport { AEtherService } from \"./ether-service.class\";\r\nimport { TEtherBigNumber } from \"./ether.type\";\r\n\r\n\r\nexport abstract class AEtherWalletService extends AEtherService {\r\n\r\n  abstract readonly account$: Observable<string>;\r\n  abstract readonly balance$: Observable<TEtherBigNumber>;\r\n  abstract readonly transactionCount$: Observable<number>;\r\n\r\n  abstract connectWallet(): Observable<string[]>;\r\n  abstract getBalanceOf(addressWallet: string): Observable<TEtherBigNumber>;\r\n  abstract getTransactionCountOf(addressWallet: string): Observable<number>;\r\n  abstract onAccountChange(): Observable<string[]>;\r\n  abstract onAccountChange(fn: (accounts: string[]) => void): void;\r\n  abstract onConnect(): Observable<boolean>;\r\n  abstract onConnect(fn: (isConnect: boolean) => void): void;\r\n  abstract onDisconnect(): Observable<void>;\r\n  abstract onDisconnect(fn: () => void): void;\r\n\r\n}\r\n","import { formatUnits } from 'ethers/lib/utils';\r\n\r\nimport { TEtherBigNumber } from './ether.type';\r\n\r\n\r\nfunction formatGwei(value: TEtherBigNumber): string {\r\n  return formatUnits(value, 'gwei');\r\n}\r\n\r\nfunction formatKwei(value: TEtherBigNumber): string {\r\n  return formatUnits(value, 'kwei');\r\n}\r\n\r\nfunction formatMwei(value: TEtherBigNumber): string {\r\n  return formatUnits(value, 'mwei');\r\n}\r\n\r\nfunction formatWei(value: TEtherBigNumber): string {\r\n  return formatUnits(value, 'wei');\r\n}\r\n\r\nexport {\r\n  formatGwei,\r\n  formatKwei,\r\n  formatMwei,\r\n  formatWei\r\n};\r\nexport { formatEther } from 'ethers/lib/utils';\r\n","import { Injectable, NgZone, OnDestroy } from '@angular/core';\r\nimport { from, Observable, of, Subject, Subscriber, timer } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, switchMap, take, takeUntil } from 'rxjs/operators';\r\n\r\nimport { AEtherProvider } from './ether-provider.class';\r\nimport { AEtherSigner } from './ether-signer.class';\r\nimport { AEtherWalletService } from './ether-wallet-service.class';\r\nimport { TEtherBigNumber } from './ether.type';\r\nimport { formatWei } from './ether.util';\r\n\r\n\r\n@Injectable()\r\nexport class EtherWalletService extends AEtherWalletService implements OnDestroy {\r\n\r\n  readonly account$: Observable<string>\r\n    = this._accountChange$.pipe(map(([account,]: string[]) => account));\r\n  readonly balance$: Observable<TEtherBigNumber>\r\n    = this._onAccountOrNetworkChange().pipe(\r\n      this._switchMapToAccount(0),\r\n      switchMap((account: string) => timer(0, 500).pipe(\r\n        switchMap((_: number) => from(this._aEtherProvider.getBalance(account)))\r\n      )),\r\n      switchMap((balance: TEtherBigNumber) => of(balance).pipe(\r\n        map((balance: TEtherBigNumber): string => formatWei(balance)),\r\n        distinctUntilChanged((\r\n          previousBalance: string,\r\n          nextBalance: string\r\n        ): boolean => previousBalance === nextBalance),\r\n        map((_: string): TEtherBigNumber => balance)\r\n      ))\r\n    );\r\n  readonly transactionCount$: Observable<number>\r\n    = this._onAccountOrNetworkChange().pipe(\r\n      this._switchMapToAccount(0),\r\n      switchMap((account: string) =>\r\n        this._aEtherProvider.getTransactionCount(account))\r\n    );\r\n\r\n  private readonly _destroySubject: Subject<void> = new Subject<void>();\r\n\r\n  constructor(\r\n    protected readonly _ngZone: NgZone,\r\n    protected readonly _aEtherProvider: AEtherProvider,\r\n    protected readonly _aEtherSigner: AEtherSigner\r\n  ) {\r\n    super(_ngZone, _aEtherProvider, _aEtherSigner);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._destroySubject.next();\r\n    this._destroySubject.complete();\r\n  }\r\n\r\n  connectWallet(): Observable<string[]> {\r\n    return new Observable<string[]>((subscriber: Subscriber<string[]>) => {\r\n      return from(this._aEtherProvider.send('eth_requestAccounts', []))\r\n        .pipe(take(1))\r\n        .subscribe({\r\n          next: (accounts: string[]) => subscriber.next(accounts)\r\n        });\r\n    });\r\n  }\r\n\r\n  getBalanceOf(addressWallet: string): Observable<TEtherBigNumber> {\r\n    return new Observable<TEtherBigNumber>((subscriber: Subscriber<TEtherBigNumber>) => {\r\n      return from(this._aEtherProvider.getBalance(addressWallet))\r\n        .pipe(take(1))\r\n        .subscribe({\r\n          next: (balance: TEtherBigNumber) => subscriber.next(balance)\r\n        });\r\n    });\r\n  }\r\n\r\n  getTransactionCountOf(addressWallet: string): Observable<number> {\r\n    return from(this._aEtherProvider.getTransactionCount(addressWallet))\r\n      .pipe(take(1));\r\n  }\r\n\r\n  onAccountChange(): Observable<string[]>;\r\n  onAccountChange(fn: (accounts: string[]) => void): void;\r\n  onAccountChange(fn?: (accounts: string[]) => void): Observable<string[]> | void {\r\n    const onAccountChange$: Observable<string[]> = this._accountChange$;\r\n\r\n    if(!fn) {\r\n      return onAccountChange$;\r\n    }\r\n\r\n    onAccountChange$.pipe(takeUntil(this._destroySubject)).subscribe({\r\n      next: (accounts: string[]) => fn(accounts)\r\n    });\r\n  }\r\n\r\n  onConnect(): Observable<boolean>;\r\n  onConnect(fn: (isConnected: boolean) => void): void;\r\n  onConnect(fn?: (isConnected: boolean) => void): Observable<boolean> | void {\r\n    const onConnect$: Observable<boolean> = this._accountChange$\r\n      .pipe(map((accounts: string[]) => accounts.length !== 0));\r\n\r\n    if(!fn) {\r\n      return onConnect$;\r\n    }\r\n\r\n    onConnect$.pipe(takeUntil(this._destroySubject)).subscribe({\r\n      next: (isConnected: boolean) => fn(isConnected)\r\n    });\r\n  }\r\n\r\n  onDisconnect(): Observable<void>;\r\n  onDisconnect(fn: () => void): void;\r\n  onDisconnect(fn?: () => void): Observable<void> | void {\r\n    const onDisconnect$: Observable<void> = this._accountChange$.pipe(\r\n      filter((accounts: string[]) => accounts.length === 0),\r\n      map((_: string[]) => void 0)\r\n    );\r\n\r\n    if(!fn) {\r\n      return onDisconnect$;\r\n    }\r\n\r\n    onDisconnect$.pipe(takeUntil(this._destroySubject)).subscribe({\r\n      next: () => fn()\r\n    });\r\n  }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ethers } from 'ethers';\r\n\r\nimport { EtherContractFnAsyncPipe } from './ether-contract-fn-async.pipe';\r\nimport { AEtherContract } from './ether-contract.class';\r\nimport { EEtherNetworkChainId } from './ether-network.enum';\r\nimport { EtherNetworkService } from './ether-network.service';\r\n\r\nimport { AEtherProvider } from './ether-provider.class';\r\nimport { AEtherSigner } from './ether-signer.class';\r\nimport { EtherTransactionService } from './ether-transaction.service';\r\nimport { EtherWalletService } from './ether-wallet.service';\r\nimport {\r\n  ETHER_TOKEN,\r\n  ETHER_TOKEN_ABI,\r\n  ETHER_TOKEN_ADDRESS_CONTRACT,\r\n  ETHER_TOKEN_IS_METAMASK_WALLET,\r\n  ETHER_TOKEN_IS_WALLET_INSTALLED,\r\n  ETHER_TOKEN_NETWORK_ID\r\n} from './ether.token';\r\nimport { TEtherConfigurationRoot } from './ether.type';\r\n\r\n\r\n@NgModule({\r\n  declarations: [EtherContractFnAsyncPipe],\r\n  exports: [EtherContractFnAsyncPipe],\r\n  imports: [CommonModule],\r\n  providers: [\r\n    {\r\n      provide: ETHER_TOKEN_IS_METAMASK_WALLET,\r\n      useFactory: ({ isMetaMask }: Partial<Record<'isMetaMask', boolean>>) => !!isMetaMask,\r\n      deps: [ETHER_TOKEN]\r\n    }, {\r\n      provide: ETHER_TOKEN_IS_WALLET_INSTALLED,\r\n      useFactory: (ether: unknown) => !!ether,\r\n      deps: [ETHER_TOKEN]\r\n    }, {\r\n      provide: AEtherProvider,\r\n      useFactory: (\r\n        ether: any,\r\n        networkId: EEtherNetworkChainId | 'any'\r\n      ) => new ethers.providers.Web3Provider(ether, networkId),\r\n      deps: [\r\n        ETHER_TOKEN,\r\n        ETHER_TOKEN_NETWORK_ID\r\n      ]\r\n    }, {\r\n      provide: AEtherContract,\r\n      useFactory: (\r\n        addressContract: TEtherConfigurationRoot['addressContract'],\r\n        abi: TEtherConfigurationRoot['abi'],\r\n        signer: AEtherSigner\r\n      ) => new ethers.Contract(addressContract, abi, signer),\r\n      deps: [\r\n        ETHER_TOKEN_ADDRESS_CONTRACT,\r\n        ETHER_TOKEN_ABI,\r\n        AEtherSigner\r\n      ]\r\n    }, {\r\n      provide: AEtherSigner,\r\n      useFactory: (etherProvider: AEtherProvider) => etherProvider.getSigner(),\r\n      deps: [AEtherProvider]\r\n    },\r\n    EtherNetworkService,\r\n    EtherTransactionService,\r\n    EtherWalletService\r\n  ]\r\n})\r\nexport class EtherRootModule { }\r\n","import { Injectable, TypeDecorator } from \"@angular/core\";\r\n\r\nimport { ACustomContract } from \"./ether-contract-custom.class\";\r\nimport { AEtherContract } from \"./ether-contract.class\";\r\nimport { EtherRootModule } from \"./ether-root.module\";\r\n\r\n\r\nexport function ContractInjectable(): TypeDecorator {\r\n  // eslint-disable-next-line @typescript-eslint/ban-types\r\n  return function<T extends { new (...args: any[]): { } & ACustomContract }>(target: T): T {\r\n    @Injectable({\r\n      providedIn: EtherRootModule,\r\n      useFactory: (contract: AEtherContract) => new CustomSmartContract(contract),\r\n      deps: [AEtherContract]\r\n    })\r\n    class CustomSmartContract extends target {\r\n\r\n      constructor(...args: any[]) {\r\n        super(args[0]);\r\n      }\r\n\r\n    }\r\n\r\n    return CustomSmartContract;\r\n  };\r\n};\r\n","\r\nexport enum EEtherNetworkChainId {\r\n  GOERLI = 0x5,\r\n  KOVAN = 0x2a,\r\n  LOCALHOST = 0x539,\r\n  MAIN = 0x1,\r\n  RINKEBY = 0x4,\r\n  ROPSTAN = 0x3\r\n}\r\n","import { Inject, ModuleWithProviders, NgModule, Provider } from '@angular/core';\r\n\r\nimport { EtherRootModule } from './ether-root.module';\r\nimport { EEtherInstance } from './ether.enum';\r\nimport { ETHER_TOKEN_ABI, ETHER_TOKEN_ADDRESS_CONTRACT, ETHER_TOKEN_INSTANCE, ETHER_TOKEN_NETWORK_ID } from './ether.token';\r\nimport { TEtherConfigurationRoot } from './ether.type';\r\n\r\n\r\n@NgModule({\r\n  providers: [{\r\n    provide:  ETHER_TOKEN_INSTANCE,\r\n    useValue: EEtherInstance.NO_STATIC_FOR_ROOT_METHOD_INVOKED\r\n  }]\r\n})\r\nexport class EtherModule {\r\n\r\n  constructor(\r\n    @Inject(ETHER_TOKEN_INSTANCE)\r\n      private readonly _etherInstance: EEtherInstance\r\n  ) {\r\n    if(_etherInstance === EEtherInstance.NO_STATIC_FOR_ROOT_METHOD_INVOKED) {\r\n      throw new Error(`'${this.constructor.name}.forRoot' static method must be called`);\r\n    }\r\n  }\r\n\r\n  static forRoot(configuration?: TEtherConfigurationRoot): ModuleWithProviders<EtherRootModule> {\r\n    let extraProviders: Provider[] = [];\r\n\r\n    if(configuration) {\r\n      const {\r\n        addressContract,\r\n        abi,\r\n        networkId\r\n      }: TEtherConfigurationRoot = configuration;\r\n\r\n      extraProviders = [\r\n        ...extraProviders,\r\n        {\r\n          provide: ETHER_TOKEN_ADDRESS_CONTRACT,\r\n          useValue: addressContract\r\n        }, {\r\n          provide: ETHER_TOKEN_ABI,\r\n          useValue: abi\r\n        }, {\r\n          provide: ETHER_TOKEN_NETWORK_ID,\r\n          useValue: networkId || 'any'\r\n        }\r\n      ];\r\n    }\r\n\r\n    return {\r\n      ngModule: EtherRootModule,\r\n      providers: [\r\n        {\r\n          provide: ETHER_TOKEN_INSTANCE,\r\n          useValue: EEtherInstance.FOR_ROOT\r\n        },\r\n\r\n        ...extraProviders\r\n      ]\r\n    };\r\n  }\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { EtherModule } from \"./ether.module\";\r\nimport { ETHER_TOKEN } from \"./ether.token\";\r\n\r\nimport * as abiMock from '../assets/abi.mock.json';\r\n\r\n\r\n@NgModule({\r\n  exports: [EtherModule],\r\n  imports: [EtherModule.forRoot({\r\n    abi: abiMock,\r\n    addressContract: '0x0'\r\n  })],\r\n  providers: [{\r\n    provide: ETHER_TOKEN,\r\n    useFactory: () => ({\r\n      chainId: 0x1,\r\n      enable: () => void 0,\r\n      isMetaMask: true,\r\n      networkVersion: \"1\",\r\n      request: () => void 0,\r\n      selectedAddress: \"0x123456789123456789\",\r\n      send: () => void 0,\r\n      sendAsync: () => void 0\r\n    })\r\n  }]\r\n})\r\nexport class EtherTestModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AEtherProvider","i2.AEtherSigner"],"mappings":"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"}