{"version":3,"file":"ngeth-ethers.mjs","sources":["../../../../packages/ethers/src/lib/components/blockies/index.ts","../../../../packages/ethers/src/lib/chain/utils.ts","../../../../packages/ethers/src/lib/events.ts","../../../../packages/ethers/src/lib/erc1193/utils.ts","../../../../packages/ethers/src/lib/erc1193/service.ts","../../../../packages/ethers/src/lib/erc1193/module.ts","../../../../packages/ethers/src/lib/erc1193/injected.ts","../../../../packages/ethers/src/lib/chain/service.ts","../../../../packages/ethers/src/lib/components/forms/ether.ts","../../../../packages/ethers/src/lib/components/forms/address.ts","../../../../packages/ethers/src/lib/components/connect/connect.component.ts","../../../../packages/ethers/src/lib/components/connect/connect.component.html","../../../../packages/ethers/src/lib/components/index.ts","../../../../packages/ethers/src/lib/pipes.ts","../../../../packages/ethers/src/lib/module.ts","../../../../packages/ethers/src/lib/contract.ts","../../../../packages/ethers/src/lib/contracts-manager.ts","../../../../packages/ethers/src/lib/contracts/utils.ts","../../../../packages/ethers/src/lib/contracts/erc20/utils.ts","../../../../packages/ethers/src/lib/contracts/erc20/contract.ts","../../../../packages/ethers/src/lib/contracts/erc20/pipes.ts","../../../../packages/ethers/src/lib/contracts/erc20/module.ts","../../../../packages/ethers/src/lib/form/validators.ts","../../../../packages/ethers/src/lib/contracts/erc20/form.ts","../../../../packages/ethers/src/lib/contracts/erc721/utils.ts","../../../../packages/ethers/src/lib/contracts/erc721/contract.ts","../../../../packages/ethers/src/lib/contracts/erc721/form.ts","../../../../packages/ethers/src/lib/contracts/erc1155/utils.ts","../../../../packages/ethers/src/lib/contracts/erc1155/contract.ts","../../../../packages/ethers/src/lib/contracts/erc1155/form.ts","../../../../packages/ethers/src/lib/guard.ts","../../../../packages/ethers/src/lib/provider.ts","../../../../packages/ethers/src/ngeth-ethers.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, Input, ElementRef, Renderer2, HostBinding } from '@angular/core';\r\nimport blockies from 'blockies';\r\n\r\n@Component({\r\n  selector: 'eth-blockies',\r\n  template: '<ng-content></ng-content>',\r\n  styleUrls: ['./style.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class BlockiesComponent {\r\n  private previous?: HTMLCanvasElement;\r\n\r\n  @HostBinding('title') title?: string;\r\n\r\n  @Input()\r\n  set address(address: string | undefined | null) {\r\n    if (!address) return;\r\n    this.title = address;\r\n    if (this.previous) this.renderer.removeChild(this.el.nativeElement, this.previous);\r\n    const { width, height } = this.el.nativeElement.getBoundingClientRect();\r\n    this.previous = blockies({ seed: address.toLowerCase() });\r\n    this.previous.style.width = `${width || 32}px`;\r\n    this.previous.style.height = `${height || 32}px`;\r\n    this.renderer.appendChild(this.el.nativeElement, this.previous);\r\n  }\r\n\r\n  constructor(private el: ElementRef<HTMLElement>, private renderer: Renderer2) {}\r\n}","import { Chain, ChainIcon, SupportedChains } from \"./types\";\r\n\r\nexport function toChainId(id: string | number) {\r\n  if (typeof id === 'string') return id;\r\n  return `0x${id.toString(16)}`;\r\n}\r\nexport function toChainIndex(id: string | number) {\r\n  if (typeof id === 'number') return id;\r\n  return parseInt(id);\r\n}\r\n\r\nexport function getChain(chainId: string | number): Promise<Chain> {\r\n  const id = toChainIndex(chainId); // transform into decimals\r\n  const url = `https://raw.githubusercontent.com/ethereum-lists/chains/master/_data/chains/eip155-${id}.json`;\r\n  return fetch(url).then(res => res.json());\r\n}\r\n\r\nexport function getChainIcons(name: string, format?: ChainIcon['format']): Promise<ChainIcon> {\r\n  const url = `https://github.com/ethereum-lists/chains/blob/master/_data/icons/${name}.json`;\r\n  return fetch(url)\r\n    .then(res => res.json())\r\n    .then((icons: ChainIcon[]) => {\r\n      if (!format) return icons[0];\r\n      return icons.find(icon => icon.format === format) ?? icons[0];\r\n    });\r\n}\r\n\r\nexport function explore(chain: Chain, search: string) {\r\n  if (!chain.explorers.length) return;\r\n  return `${chain.explorers[0].url}/search?q=${search}`;\r\n}\r\n\r\nexport function isSupportedChain(chainId: string | number, supportedChains: SupportedChains) {\r\n  if (supportedChains === '*') return true;\r\n  const chainIndex = toChainIndex(chainId);\r\n  return supportedChains.includes(chainIndex);\r\n}\r\n\r\n\r\n\r\nconst chainIds = {\r\n  local: toChainId(1337),\r\n  hardhat: toChainId(31337)\r\n}\r\n\r\n\r\nexport const defaultCustomChains: Record<string, Chain> = {\r\n  [chainIds.local]: {\r\n    name: 'Localhost',\r\n    shortName: 'local',\r\n    chain: 'ETH',\r\n    chainId: toChainIndex(chainIds.local),\r\n    networkId: toChainIndex(chainIds.local),\r\n    rpc: [],\r\n    faucets: [],\r\n    explorers: [],\r\n    nativeCurrency: {\r\n      name: \"Local Test Ether\",\r\n      symbol: \"ETH\",\r\n      decimals: 18\r\n    }\r\n  },\r\n  [chainIds.hardhat]: {\r\n    name: 'Hardhat',\r\n    shortName: 'hardhat',\r\n    chain: 'ETH',\r\n    chainId: toChainIndex(chainIds.hardhat),\r\n    networkId: toChainIndex(chainIds.hardhat),\r\n    rpc: [],\r\n    faucets: [],\r\n    explorers: [],\r\n    nativeCurrency: {\r\n      name: \"Hardhat Test Ether\",\r\n      symbol: \"ETH\",\r\n      decimals: 18\r\n    }\r\n  }\r\n};\r\n","import { NgZone } from \"@angular/core\";\r\nimport { Provider, EventFilter } from \"@ethersproject/abstract-provider\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ERC1193Provider } from \"./erc1193\";\r\n\r\nexport function fromEthEvent<T>(\r\n  provider: Provider | ERC1193Provider,\r\n  zone: NgZone,\r\n  event: string | EventFilter,\r\n  initial?: Partial<T>\r\n) {\r\n  return new Observable<T>((subscriber) => {\r\n    if (arguments.length === 4) zone.run(() => subscriber.next(initial as any));\r\n    const handler = (...args: any[]) => {\r\n      zone.run(() => subscriber.next(1 < args.length ? args : args[0]));\r\n    };\r\n    provider.addListener(event as any, handler);\r\n    return () => provider.removeListener(event as any, handler);\r\n  });\r\n}","import type { Chain } from '../chain';\r\nimport { AddChainParameter } from './types';\r\n\r\nexport function fromChain(chain: Chain): AddChainParameter {\r\n  return ({\r\n    chainId: `0x${chain.chainId.toString(16)}`,\r\n    chainName: chain.name,\r\n    nativeCurrency: chain.nativeCurrency,\r\n    rpcUrls: chain.rpc,\r\n    blockExplorerUrls: chain.explorers.map(explorer => explorer.url),\r\n    iconUrls: []\r\n  })\r\n}","import { inject, NgZone } from '@angular/core';\r\nimport { getAddress } from '@ethersproject/address';\r\nimport { AddChainParameter, ERC1193Events, ERC1193Param, ERC1193Provider, WalletProfile, WatchAssetParams } from './types';\r\nimport { toChainIndex } from '../chain/utils';\r\nimport { timer, Observable, of, combineLatest, defer, BehaviorSubject } from 'rxjs';\r\nimport { map, shareReplay, switchMap, filter } from 'rxjs/operators';\r\nimport { JsonRpcSigner, Web3Provider } from '@ethersproject/providers';\r\nimport { fromEthEvent } from '../events';\r\nimport { getChain, toChainId } from '../chain';\r\nimport { fromChain } from './utils';\r\n\r\n\r\nconst errorCode = {\r\n  4001:\t'[User Rejected Request] The user rejected the request.',\r\n  4100:\t'[Unauthorized] \tThe requested method and/or account has not been authorized by the user.',\r\n  4200:\t'[Unsupported Method]\tThe Provider does not support the requested method.',\r\n  4900:\t'[Disconnected] The Provider is disconnected from all chains.',\r\n  4901:\t'[Chain Disconnected] The Provider is not connected to the requested chain.',\r\n}\r\n\r\n\r\n\r\nfunction exist<T>(value?: T | null): value is T {\r\n  return value !== undefined && value !== null;\r\n}\r\n\r\n\r\nexport abstract class ERC1193<Wallet extends WalletProfile = WalletProfile> {\r\n  private zone = inject(NgZone);\r\n  #ethersProvider?: Web3Provider;\r\n  #ethersSigner?: JsonRpcSigner;\r\n  #wallet = new BehaviorSubject<Wallet | null>(null);\r\n  #events: Record<string, Observable<unknown>> = {};\r\n\r\n  walletChanges = this.#wallet.asObservable();\r\n  \r\n  protected provider?: ERC1193Provider;\r\n  abstract account?: string;\r\n  abstract chainId?: number;\r\n  abstract wallets: Wallet[];\r\n  /** Method used to ask the user which wallet to select if multiple wallet available */\r\n  protected abstract getWallet(): Promise<Wallet | undefined>;\r\n\r\n  /** Observe if current account is connected */\r\n  connected$ = this.walletChanges.pipe(\r\n    filter(exist),\r\n    switchMap(wallet => {\r\n      return combineLatest([\r\n        this.fromEvent(wallet, 'connect', undefined),\r\n        this.fromEvent(wallet, 'disconnect', undefined),\r\n      ])\r\n    }),\r\n    switchMap(() => {\r\n      if (this.provider?.isConnected()) return of(true);\r\n      return timer(500).pipe(map(() => this.provider?.isConnected()))\r\n    }),\r\n    shareReplay({ refCount: true, bufferSize: 1 })\r\n  );\r\n    \r\n  /**\r\n   * First account connected to the dapp, if any\r\n   * @note This might not be the selected account in Metamask\r\n   */\r\n  account$ = this.walletChanges.pipe(\r\n    switchMap(wallet => wallet ? this.fromEvent(wallet, 'accountsChanged', []) : of(void 0)),\r\n    switchMap(() => {\r\n      if (this.account) return of([this.account]);\r\n      return timer(500).pipe(map(() => (this.account ? [this.account] : [])));\r\n    }),\r\n    map(accounts => accounts.length ? getAddress(accounts[0]) : undefined),\r\n    shareReplay({ refCount: true, bufferSize: 1 })\r\n  );\r\n\r\n  /** \r\n   * Current account. Doesn't emit until therer is a connected account\r\n   * @note ⚠️ Only use if you're sure there is an account (inside a guard for example)\r\n   */\r\n  currentAccount$ = this.account$.pipe(filter(exist));\r\n\r\n  chainId$ = this.walletChanges.pipe(\r\n    switchMap(wallet => wallet ? this.fromEvent(wallet, 'chainChanged', undefined) : of(void 0)),\r\n    switchMap(() => {\r\n      if (this.chainId) return of(this.chainId);\r\n      return timer(500).pipe(map(() => this.chainId))\r\n    }),\r\n    filter(exist),\r\n    map(chainId => toChainIndex(chainId)),\r\n    shareReplay({ refCount: true, bufferSize: 1 })\r\n  );\r\n\r\n  message$ = this.walletChanges.pipe(\r\n    filter(exist),\r\n    switchMap(wallet => this.fromEvent(wallet, 'message')),\r\n  );\r\n\r\n  get ethersProvider() {\r\n    return this.#ethersProvider;\r\n  }\r\n\r\n  get ethersSigner() {\r\n    return this.#ethersSigner;\r\n  }\r\n\r\n  /** Listen on event from MetaMask Provider */\r\n  protected fromEvent<K extends keyof ERC1193Events>(\r\n    wallet: Wallet,\r\n    event: K,\r\n    initial?: ERC1193Param<K>\r\n  ): Observable<ERC1193Param<K>> {\r\n    if (!this.#events[event]) {\r\n      this.#events[event] = defer(() => {\r\n        return fromEthEvent<ERC1193Param<K>>(wallet.provider, this.zone, event, initial);\r\n      });\r\n    }\r\n    return this.#events[event] as Observable<ERC1193Param<K>>;\r\n  }\r\n\r\n  /** Select a wallet to setup the provider & signer */\r\n  async selectWallet(wallet?: Wallet) {\r\n    if (!wallet) {\r\n      if (!this.wallets.length) throw new Error('No wallet provided or found');\r\n      wallet = await this.getWallet();\r\n      if (!wallet) throw new Error('No wallet selected');\r\n    }\r\n    if (wallet.provider !== this.provider) {\r\n      this.#ethersProvider = new Web3Provider(wallet.provider);\r\n      this.#ethersSigner = this.#ethersProvider.getSigner();\r\n      this.#wallet.next(wallet);\r\n      this.provider = wallet.provider;\r\n    }\r\n  }\r\n\r\n  /** Select a wallet and connect to it */\r\n  async enable(wallet?: Wallet): Promise<string[]> {\r\n    await this.selectWallet(wallet);\r\n    if (!this.provider) throw new Error('No provider connected to ERC1193 service');\r\n    return this.provider.request({ method: 'eth_requestAccounts' });\r\n  }\r\n\r\n  /**\r\n   * Request user to change chain\r\n   * @note If the error code (error.code) is 4902, then the requested chain has not been added by MetaMask, and you have to request to add it via addChain\r\n   * @param id The 0x-non zero chainId or decimal number\r\n   */\r\n  switchChain(id: string | number) {\r\n    const chainId = toChainId(id);\r\n    return this.provider?.request<null>({\r\n      method: 'wallet_switchEthereumChain',\r\n      params: [{ chainId }]\r\n    });\r\n  }\r\n\r\n  async addChain(chain: AddChainParameter | string) {\r\n    const params = (typeof chain === \"string\")\r\n      ? await getChain(chain).then(fromChain)\r\n      : chain;\r\n    return this.provider?.request<null>({\r\n      method: 'wallet_addEthereumChain',\r\n      params: [params]\r\n    });\r\n  }\r\n\r\n  watchAsset(params: WatchAssetParams['options']) {\r\n    return this.provider?.request<boolean>({\r\n      method: 'wallet_watchAsset',\r\n      params: { type: 'ERC20', options: params }\r\n    });\r\n  }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { Provider } from '@ethersproject/abstract-provider';\r\nimport { Signer } from '@ethersproject/abstract-signer';\r\nimport { ERC1193 } from './service';\r\nimport { WalletProfile } from './types';\r\n\r\n\r\nexport function ethersProviders<T extends WalletProfile>(erc1193: Type<ERC1193<T>>) {\r\n  return [{\r\n    provide: ERC1193,\r\n    useClass: erc1193\r\n  },{\r\n    provide: Provider,\r\n    useFactory: (erc1193: ERC1193) => erc1193.ethersProvider,\r\n    deps: [ERC1193]\r\n  }, {\r\n    provide: Signer,\r\n    useFactory: (erc1193: ERC1193) => erc1193.ethersSigner,\r\n    deps: [ERC1193]\r\n  }]\r\n  \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ERC1193 } from './service';\r\nimport { getAddress } from '@ethersproject/address';\r\nimport { toChainIndex } from '../chain';\r\nimport { ERC1193Provider, WalletProfile } from './types';\r\n\r\nfunction toInjectedWallet(provider: any): WalletProfile {\r\n  if (provider.isMetaMask) return { label: 'MetaMask', provider };\r\n  if (provider.isCoinbaseWallet) return { label: 'Coinbase', provider };\r\n  return { label: 'Unknown', provider };\r\n}\r\n\r\nfunction getInjectedProviders(): ERC1193Provider[] {\r\n  const ethereum = (window as any).ethereum;\r\n  if (!ethereum) return [];\r\n  if (Array.isArray(ethereum.providers) && ethereum.providers.length) {\r\n    return Array.from(new Set(ethereum.providers));\r\n  }\r\n  return [ethereum];\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class InjectedProviders extends ERC1193 {\r\n  wallets = getInjectedProviders().map(toInjectedWallet);\r\n\r\n  constructor() {\r\n    super();\r\n    if (this.wallets.length === 1) this.selectWallet(this.wallets[0]);\r\n  }\r\n\r\n  protected async getWallet() {\r\n    if (!this.wallets.length) return;\r\n    if (this.wallets.length === 1) return this.wallets[0];\r\n    const labels = this.wallets.map(w => w.label);\r\n    const res = prompt(`Which wallet do you want to use ? ${labels.join(', ')}`);\r\n    const wallet = this.wallets.find(w => w.label.toLowerCase() === res?.toLowerCase());\r\n    if (!wallet) alert(`\"${res}\" is not part of options: ${labels.join(', ')}`);\r\n    return wallet;\r\n  }\r\n\r\n  get account() {\r\n    if (!this.provider?.selectedAddress) return;\r\n    return getAddress(this.provider.selectedAddress);\r\n  }\r\n\r\n  get chainId() {\r\n    if (!this.provider?.chainId) return;\r\n    return toChainIndex(this.provider.chainId);\r\n  }\r\n}","import { Inject, Injectable, InjectionToken, Optional } from \"@angular/core\";\r\nimport { Provider } from '@ethersproject/providers';\r\nimport { ERC1193 } from \"../erc1193\";\r\nimport { ChainIcon, Chain, SupportedChains, ChainId } from \"./types\";\r\nimport { explore, getChain, getChainIcons, defaultCustomChains, toChainId } from \"./utils\";\r\nimport { defer,  from } from \"rxjs\";\r\nimport { filter, switchMap } from 'rxjs/operators';\r\n\r\nexport const CUSTOM_CHAINS = new InjectionToken<Record<string, Chain>>('Custom Chains to use instead of https://github.com/ethereum-lists/chains', {\r\n  providedIn: 'root',\r\n  factory: () => defaultCustomChains\r\n});\r\n\r\nexport const SUPPORTED_CHAINS = new InjectionToken<SupportedChains>('List of supported chains', {\r\n  providedIn: 'root',\r\n  factory: () => '*'\r\n});\r\n\r\nfunction exist<T>(value?: T | null): value is T {\r\n  return value !== undefined && value !== null;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChainManager {\r\n  private chains: Record<string, Chain> = {};\r\n  private icons: Record<string, ChainIcon> = {};\r\n\r\n  chain$ = defer(() => {\r\n    const source = this.erc1193 ? this.erc1193.chainId$ : from(this.currentChain());\r\n    return source;\r\n  }).pipe(\r\n    filter(exist),\r\n    switchMap(chainId => this.getChain(chainId)),\r\n  )\r\n\r\n  constructor(\r\n    private provider: Provider,\r\n    @Inject(CUSTOM_CHAINS) private customChains: Record<string, Chain>,\r\n    @Optional() private erc1193?: ERC1193,\r\n  ) {}\r\n\r\n  private async currentChain() {\r\n    if (this.erc1193) return this.erc1193.chainId;\r\n    return this.provider.getNetwork().then(network => network.chainId);\r\n  }\r\n\r\n  async getChain(chainId?: ChainId): Promise<Chain> {\r\n    chainId = chainId ?? await this.currentChain();\r\n    if (!chainId) throw new Error('No chainId provided');\r\n    const id = toChainId(chainId);\r\n    if (id in this.customChains) return this.customChains[id];\r\n    if (!this.chains[id]) {\r\n      this.chains[id] = await getChain(id);\r\n    }\r\n    return this.chains[id];\r\n  }\r\n\r\n  async getIcon(name: string, format?: ChainIcon['format']) {\r\n    const key = format ? `${name}_${format}` : name;\r\n    if (!this.icons[key]) {\r\n      this.icons[key] = await getChainIcons(name, format);\r\n    }\r\n    return this.icons[key];\r\n  }\r\n\r\n  async explore(search: string, chainId?: ChainId) {\r\n    chainId = chainId ?? await this.currentChain();\r\n    if (!chainId) throw new Error('No chainId provided');\r\n    const chain = await this.getChain(chainId);\r\n    return explore(chain, search);\r\n  }\r\n}","import { Directive, ElementRef, forwardRef, HostListener, Input, Renderer2 } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport type { BigNumberish } from \"ethers\";\r\nimport { formatUnits, parseUnits } from \"@ethersproject/units\";\r\nimport { Chain, ChainId, ChainManager } from \"../../chain\";\r\n\r\n@Directive({\r\n  selector: 'input[type=\"ether\"]',\r\n  providers:[{\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => EtherInputDirective),\r\n    multi: true\r\n  }],\r\n})\r\nexport class EtherInputDirective implements ControlValueAccessor {\r\n  chain?: Chain;\r\n  @Input() set chainId(id: ChainId | null) {\r\n    this.setChain(id);\r\n  }\r\n\r\n  @HostListener('change', ['$event']) change(event: Event) {\r\n    this.onChange((event.target as HTMLInputElement).value);\r\n  }\r\n  @HostListener('blur') blur() {\r\n    this.onTouch();\r\n  }\r\n\r\n  private onChange: (value: string) => unknown = () => null;\r\n  private onTouch = () => null;\r\n\r\n  constructor(\r\n    private chainManager: ChainManager,\r\n    private renderer: Renderer2,\r\n    private el: ElementRef<HTMLInputElement>,\r\n  ) { }\r\n\r\n  private setProperty(key: string, value: unknown): void {\r\n    this.renderer.setProperty(this.el.nativeElement, key, value);\r\n  }\r\n\r\n  private async setChain(id?: ChainId | null) {\r\n    this.chain = id\r\n      ? await this.chainManager.getChain(id)\r\n      : await this.chainManager.getChain();\r\n  }\r\n\r\n  get decimals() {\r\n    return this.chain?.nativeCurrency.decimals;\r\n  }\r\n  \r\n  async writeValue(value: BigNumberish) {\r\n    if (value) {\r\n      this.setProperty('value', formatUnits(value, this.chain?.nativeCurrency.decimals));\r\n    } else {\r\n      this.setProperty('value', '');\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: (value: BigNumberish) => null): void {\r\n    this.onChange = (value: string) => {\r\n      fn(parseUnits(value, this.decimals));\r\n    }\r\n  }\r\n\r\n  registerOnTouched(fn: () => null): void {\r\n    this.onTouch = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.setProperty('disabled', isDisabled);\r\n  }\r\n}","import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { getAddress } from \"@ethersproject/address\";\r\n\r\n@Directive({\r\n  selector: 'input[type=\"ethAddress\"]',\r\n  providers:[{\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => AddressInputDirective),\r\n    multi: true\r\n  }],\r\n})\r\nexport class AddressInputDirective implements ControlValueAccessor {\r\n\r\n  @HostListener('change', ['$event']) change(event: Event) {\r\n    this.onChange((event.target as HTMLInputElement).value);\r\n  }\r\n  @HostListener('blur') blur() {\r\n    this.onTouch();\r\n  }\r\n\r\n  private onChange: (value: string) => unknown = () => null;\r\n  private onTouch = () => null;\r\n\r\n  constructor(\r\n    private renderer: Renderer2,\r\n    private el: ElementRef<HTMLInputElement>,\r\n  ) { }\r\n\r\n  private setProperty(key: string, value: unknown): void {\r\n    this.renderer.setProperty(this.el.nativeElement, key, value);\r\n  }\r\n\r\n  async writeValue(value: string) {\r\n    if (value) {\r\n      this.setProperty('value', getAddress(value));\r\n    } else {\r\n      this.setProperty('value', '');\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: (value: string) => null): void {\r\n    this.onChange = (value: string) => {\r\n      fn(getAddress(value));\r\n    }\r\n  }\r\n\r\n  registerOnTouched(fn: () => null): void {\r\n    this.onTouch = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.setProperty('disabled', isDisabled);\r\n  }\r\n}","import { Component, ChangeDetectionStrategy, ViewChild, ElementRef } from '@angular/core';\nimport { ERC1193, WalletProfile } from '../../erc1193';\n\ninterface DialogElement extends HTMLElement {\n  showModal: () => void;  \n}\n\n@Component({\n  selector: 'eth-connect',\n  templateUrl: './connect.component.html',\n  styleUrls: ['./connect.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EthConnectComponent {\n\n  @ViewChild('selectDialog') selectDialog!: ElementRef<DialogElement>;\n\n  wallets = this.erc1193.wallets;\n  account$ = this.erc1193.account$;\n  connected$ = this.erc1193.connected$;\n\n  constructor(\n    private erc1193: ERC1193\n  ) { }\n\n  select(wallet: WalletProfile) {\n    this.erc1193.selectWallet(wallet);\n  }\n\n  enable() {\n    if (this.wallets.length === 1) return this.erc1193.enable();\n    return this.selectDialog.nativeElement.showModal();\n  }\n}\n","<ng-container *ngIf=\"wallets.length; else noProvider\">\n  <ng-container *ngIf=\"account$ | async as account; else connect\">\n    {{ account }}\n  </ng-container>\n</ng-container>\n\n<ng-template #noProvider>\n  <button>Create an account</button>\n</ng-template>\n<ng-template #connect>\n  <button (click)=\"enable()\">Select Wallet</button>\n</ng-template>\n\n<dialog #selectDialog>\n  <form method=\"dialog\">\n    <header>\n      <h2>Providers</h2>\n      <button>close</button>\n    </header>\n    <ul>\n      <li *ngFor=\"let wallet of wallets\">\n        <button (click)=\"select(wallet)\">{{ wallet.label }}</button>\n      </li>\n    </ul>\n  </form>\n</dialog>","import { BlockiesComponent } from './blockies';\r\nimport { EtherInputDirective } from './forms/ether';\r\nimport { AddressInputDirective } from './forms/address';\r\nimport { EthConnectComponent } from './connect/connect.component';\r\n\r\nexport * from './blockies';\r\nexport * from './forms/ether';\r\nexport * from './forms/address';\r\nexport * from './connect/connect.component';\r\n\r\nexport const ethersComponents = [EtherInputDirective, BlockiesComponent, AddressInputDirective, EthConnectComponent];\r\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\r\nimport { BigNumber, BigNumberish } from 'ethers';\r\nimport { getAddress } from '@ethersproject/address';\r\nimport { formatUnits, formatEther } from '@ethersproject/units';\r\nimport { EtherSymbol } from '@ethersproject/constants';\r\nimport { isBytes } from '@ethersproject/bytes';\r\nimport { Chain, ChainCurrency, ChainId, ChainManager, explore, isSupportedChain, SupportedChains, SUPPORTED_CHAINS } from './chain';\r\nimport { map } from 'rxjs/operators';\r\n\r\nfunction formatNativeCurrency(value: BigNumberish, currency: ChainCurrency) {\r\n  const amount = formatUnits(value, currency.decimals);\r\n  const symbol = currency.symbol ?? currency.name;\r\n  return `${amount} ${symbol}`;\r\n}\r\n\r\n@Pipe({ name: 'bignumber' })\r\nexport class BigNumberPipe implements PipeTransform {\r\n  transform(value: BigNumberish) {\r\n    if (value instanceof BigNumber) return value.toString();\r\n    if (typeof value === 'bigint') return value.toString(10);\r\n    if (typeof value === 'string') return value.startsWith('0x') ? parseInt(value) : value;\r\n    if (isBytes(value)) return new Uint8Array(value).toString(); // todo\r\n    return BigNumber.from(value).toString();\r\n  }\r\n}\r\n\r\n@Pipe({ name: 'ether' })\r\nexport class EtherPipe implements PipeTransform {\r\n  transform(value?: BigNumberish | null) {\r\n    if (value === null || value === undefined) return;\r\n    return `${formatEther(value)} ${EtherSymbol}`;\r\n  }\r\n}\r\n\r\n@Pipe({ name: 'ethCurrency' })\r\nexport class EthCurrencyPipe implements PipeTransform {\r\n  constructor(@Optional() private chain?: ChainManager) {}\r\n  async transform(value?: BigNumberish | null, chainId?: ChainId) {\r\n    if (value === null || value === undefined) return;\r\n    if (!this.chain) return `${formatEther(value)}${EtherSymbol}`;\r\n    if (chainId) {\r\n      const chain = await this.chain.getChain(chainId)\r\n      return formatNativeCurrency(value, chain.nativeCurrency);\r\n    }\r\n    return this.chain.chain$.pipe(\r\n      map(chain => formatNativeCurrency(value, chain.nativeCurrency))\r\n    );\r\n  }\r\n}\r\n\r\n@Pipe({ name: 'chain' })\r\nexport class ChainPipe implements PipeTransform {\r\n  constructor(private chain: ChainManager) {}\r\n  transform(chainId: ChainId) {\r\n    return this.chain.getChain(chainId);\r\n  }\r\n}\r\n\r\n@Pipe({ name: 'explore' })\r\nexport class ExplorePipe implements PipeTransform {\r\n  transform(search: string, chain: Chain) {\r\n    return explore(chain, search);\r\n  }\r\n}\r\n\r\n@Pipe({ name: 'supportedChain' })\r\nexport class SupportedChainPipe implements PipeTransform {\r\n  constructor(@Inject(SUPPORTED_CHAINS) private supportedChains: SupportedChains) {}\r\n  transform(chainId: string | number) {\r\n    return isSupportedChain(chainId, this.supportedChains);\r\n  }\r\n}\r\n\r\n@Pipe({ name: 'address' })\r\nexport class AddressPipe implements PipeTransform {\r\n  transform(address: string, format: 'short' | 'full' = 'full') {\r\n    const account = getAddress(address);\r\n    if (format === 'short') return `${account.slice(0, 6)}...${account.slice(-4)}`;\r\n    return account;\r\n  }\r\n}\r\n\r\nexport const ethersPipes = [\r\n  BigNumberPipe,\r\n  EtherPipe, \r\n  EthCurrencyPipe,\r\n  ExplorePipe,\r\n  AddressPipe,\r\n  SupportedChainPipe,\r\n  ChainPipe,\r\n];","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ethersComponents } from './components';\nimport { ethersPipes } from './pipes';\n\n\n@NgModule({\n  declarations: [...ethersPipes, ...ethersComponents],\n  exports: [...ethersPipes, ...ethersComponents],\n  imports: [CommonModule],\n})\nexport class EthersModule {}\n\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\nimport { BaseContract, EventFilter, ContractInterface } from '@ethersproject/contracts';\r\nimport { Log } from '@ethersproject/abstract-provider';\r\nimport { Observable, shareReplay, map, from, scan, startWith, combineLatest, finalize } from 'rxjs';\r\nimport { fromEthEvent } from './events';\r\nimport { inject, NgZone } from '@angular/core';\r\n\r\nimport type { Signer } from '@ethersproject/abstract-signer';\r\nimport type { Event } from '@ethersproject/contracts';\r\nimport type { Listener, Provider, BlockTag } from \"@ethersproject/providers\";\r\nimport type { BytesLike } from '@ethersproject/bytes';\r\n\r\nexport type FilterParam<T> = T | T[] | null;\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface TypedFilter<T> extends EventFilter {}\r\n\r\nexport type EventArgs<T extends ContractEvents<any, any>, K extends keyof T['filters']> = Parameters<T['events'][K]> & T['queries'][K];\r\nexport interface TypedEvent<T extends ContractEvents<any, any>, K extends keyof T['filters']> extends Event {\r\n  args: EventArgs<T, K>;\r\n}\r\n\r\ninterface ContractEvents<EventKeys extends string, FilterKeys extends string> {\r\n  events: {[name in EventKeys]: Listener; }\r\n  filters: {[name in FilterKeys]: (...args: any[]) => TypedFilter<name>; }\r\n  queries: {[name in FilterKeys]: any }\r\n}\r\n\r\n\r\nfunction getEventTag(filter: EventFilter): string {\r\n  const emptyTopics = !filter.topics || !filter.topics.length;\r\n  if (filter.address && emptyTopics) return '*';\r\n\r\n  const address = filter.address ?? '*';\r\n  const topics = (filter.topics ?? []).map((topic) =>\r\n    Array.isArray(topic) ? topic.join('|') : topic\r\n  );\r\n  return `${address}:${topics}`;\r\n}\r\n\r\nfunction flattenEvents(events: Event[]) {\r\n  const record: Record<string, Event> = {};\r\n  for (const event of events) {\r\n    record[event.transactionHash] = event;\r\n  }\r\n  return Object.values(record);\r\n} \r\n\r\n\r\n\r\nexport class NgContract<\r\n  Events extends ContractEvents<EventKeys, FilterKeys>,\r\n  EventKeys extends Extract<keyof Events['events'], string> = Extract<keyof Events['events'], string>,\r\n  FilterKeys extends Extract<keyof Events['filters'], string> = Extract<keyof Events['filters'], string>,\r\n> extends BaseContract {  \r\n  \r\n  // FILTERS\r\n  override filters!: Events['filters'];\r\n  override queryFilter!: <K extends FilterKeys>(\r\n    event: TypedFilter<K>,\r\n    fromBlockOrBlockhash?: BlockTag,\r\n    toBlock?: BlockTag,\r\n  ) => Promise<TypedEvent<Events, K>[]>;\r\n\r\n  override attach!: (addressOrName: string) => this;\r\n  override connect!: (providerOrSigner: Provider | Signer) => this;\r\n  deloyed?: () => Promise<this>;\r\n  \r\n  // Events\r\n  override listenerCount!: (eventName?: EventFilter | EventKeys) => number;\r\n  override listeners!: <K extends EventKeys>(eventName?: TypedFilter<K> | K) => Listener[];\r\n  override off!: <K extends EventKeys>(eventName: TypedFilter<K> | K, listener: Events['events'][K]) => this;\r\n  override on!: <K extends EventKeys>(eventName: TypedFilter<K> | K, listener: Events['events'][K]) => this;\r\n  override once!: <K extends EventKeys>(eventName: TypedFilter<K> | K, listener: Events['events'][K]) => this;\r\n  override removeListener!: <K extends EventKeys>(eventName: TypedFilter<K> | K, listener: Events['events'][K]) => this;\r\n  override removeAllListeners!: (eventName?: EventFilter | EventKeys) => this;\r\n\r\n  private ngZone: NgZone;\r\n  private _events: Record<string, Observable<any>> = {};\r\n\r\n  constructor(\r\n    address: string,\r\n    abi: ContractInterface,\r\n    signer?: Provider | Signer,\r\n    ngZone?: NgZone,\r\n  ) {\r\n    super(address, abi, signer);\r\n    this.ngZone = ngZone ?? inject(NgZone);\r\n  }\r\n\r\n  /** Transform event name into an EventFilter */\r\n  private getEventFilter(name: string): EventFilter {\r\n    if (name === 'error')\r\n      throw new Error('\"error\" event is not implemented yet');\r\n    if (name === 'event')\r\n      throw new Error('\"event\" event is not implemented yet');\r\n    if (name === '*') throw new Error('\"*\" event is not implemented yet');\r\n    const fragment = this.interface.getEvent(name);\r\n    const topic = this.interface.getEventTopic(fragment);\r\n    return { address: this.address, topics: [topic] };\r\n  }\r\n\r\n  private wrapEvent(log: Log): TypedEvent<Events, FilterKeys> {\r\n    const { name, signature, args, eventFragment } = this.interface.parseLog(log);\r\n    return {\r\n      ...log,\r\n      getBlock: () => this.provider.getBlock(log.blockHash),\r\n      getTransaction: () => this.provider.getTransaction(log.transactionHash),\r\n      getTransactionReceipt: () => this.provider.getTransactionReceipt(log.transactionHash),\r\n      decode: (data: BytesLike, topics?: Array<string>) => {\r\n        return this.interface.decodeEventLog(eventFragment, data, topics);\r\n      },\r\n      event: name,\r\n      eventSignature: signature,\r\n      args: args\r\n    } as TypedEvent<Events, FilterKeys>\r\n  }\r\n\r\n  /**\r\n   * Listen on the changes of an event, starting with the current state\r\n   * @param event The event filter\r\n   */\r\n  from<K extends FilterKeys>(event: TypedFilter<K> | K): Observable<TypedEvent<Events, K>[]> {\r\n    if (!this.provider) throw new Error('Provider required for event');\r\n    const eventFilter = typeof event === 'string'\r\n      ? this.getEventFilter(event)\r\n      : event;\r\n    const topic = eventFilter.topics?.[0];\r\n    if (typeof topic !== 'string') throw new Error('Invalid topic');\r\n\r\n    const tag = getEventTag(eventFilter);\r\n    if (!this._events[tag]) {\r\n      const initial = this.queryFilter(eventFilter);\r\n      const listener = fromEthEvent<Log>(\r\n        this.provider,\r\n        this.ngZone,\r\n        eventFilter\r\n      ).pipe(\r\n        map(log => this.wrapEvent(log)),\r\n        scan((acc, value) => acc.concat(value), [] as TypedEvent<Events, FilterKeys>[]),\r\n        startWith([] as TypedEvent<Events, FilterKeys>[])\r\n      );\r\n\r\n      this._events[tag] = combineLatest([\r\n        from(initial),\r\n        listener,\r\n      ]).pipe(\r\n        map(([events, last]) => [...events, ...last]),\r\n        map(flattenEvents), // remove duplicated (events seems to have a cache of 2 somehow...)\r\n        finalize(() => delete this._events[tag]), // remove cache when no subscriber remains\r\n        shareReplay({ refCount: true, bufferSize: 1 }),\r\n      );\r\n    }\r\n    return this._events[tag];\r\n  }\r\n}\r\n","import { inject, Injectable, Injector, NgZone } from '@angular/core';\r\nimport { Signer } from '@ethersproject/abstract-signer';\r\n\r\n@Injectable()\r\nexport abstract class ContractsManager<T> {\r\n  private contracts: Record<string, Record<string, T>> = {};\r\n  private injector = inject(Injector);\r\n  protected zone = inject(NgZone);\r\n  protected get signer() {\r\n    return this.injector.get(Signer);\r\n  }\r\n\r\n  protected abstract createInstance(address: string): T;\r\n\r\n  get(address: string, chainId: number): T {\r\n    if (!this.contracts[chainId]) this.contracts[chainId] = {};\r\n    if (!this.contracts[chainId][address]) {\r\n      this.contracts[chainId][address] = this.createInstance(address);\r\n    }\r\n    return this.contracts[chainId][address] as T;\r\n  }\r\n}","import { BigNumber } from \"ethers\";\r\n\r\nexport function sum<T>(array: T[], getField: (item: T) => BigNumber | undefined) {\r\n  return array.reduce((total, item) => total.add(getField(item) ?? 0), BigNumber.from(0));\r\n}\r\n\r\n","import { formatNumber } from \"@angular/common\";\r\nimport { BigNumber } from '@ethersproject/bignumber';\r\nimport { Event } from \"ethers\";\r\nimport { sum } from \"../utils\";\r\nimport { ERC20Metadata } from \"./types\";\r\n\r\nexport function erc20Balance(received: Event[], sent: Event[]) {\r\n  const toAdd = sum(received, event => event.args?.[2] as BigNumber);\r\n  const toRemove = sum(sent, event => event.args?.[2] as BigNumber);\r\n  return toAdd.sub(toRemove);\r\n}\r\n\r\nexport function formatERC20(balance: BigNumber, metadata: ERC20Metadata, digitInfo?: string, locale?: string) {\r\n  const base = BigNumber.from(10).pow(metadata.decimals);\r\n  const amount = balance.div(base);\r\n  const value = formatNumber(amount.toNumber(), locale || 'en', digitInfo);\r\n  return `${value} ${metadata.symbol}`;\r\n}\r\n\r\nexport function parseERC20(amount: number | string, metadata: ERC20Metadata) {\r\n  const value = typeof amount === 'string' ? parseInt(amount) : amount;\r\n  const base = BigNumber.from(10).pow(metadata.decimals);\r\n  return BigNumber.from(value).mul(base);\r\n}","import { NgContract, FilterParam, TypedFilter } from \"../../contract\";\r\nimport { BigNumber, Overrides, CallOverrides, Signer, ContractTransaction, BigNumberish } from \"ethers\";\r\nimport { Provider } from \"@ethersproject/providers\";\r\nimport { combineLatest, map, shareReplay } from \"rxjs\";\r\nimport { erc20Balance } from \"./utils\";\r\nimport { NgZone } from \"@angular/core\";\r\nimport { ERC20Metadata } from \"./types\";\r\n\r\nexport interface BaseERC20Events {\r\n  events: {\r\n    Approval: (owner: string, spender: string, value: BigNumber) => void;\r\n    Transfer: (from: string, to: string, value: BigNumber) => void;\r\n  };\r\n  filters: {\r\n    Approval: (owner?: FilterParam<string>, spender?: FilterParam<string>) => TypedFilter<\"Approval\">;\r\n    Transfer: (from?: FilterParam<string>, to?: FilterParam<string>) => TypedFilter<\"Transfer\">;\r\n  };\r\n  queries: {\r\n    Approval: { owner: string; spender: string; value: BigNumber };\r\n    Transfer: { from: string; to: string; value: BigNumber };\r\n  };\r\n}\r\n\r\n\r\nexport class ERC20 extends NgContract<BaseERC20Events> {\r\n  private metadata?: ERC20Metadata;\r\n  // Read\r\n  allowance!: (owner: string, spender: string, overrides?: CallOverrides) => Promise<BigNumber>;\r\n  balanceOf!: (account: string, overrides?: CallOverrides) => Promise<BigNumber>;\r\n  decimals!: (overrides?: CallOverrides) => Promise<number>;\r\n  name!: (overrides?: CallOverrides) => Promise<string>;\r\n  symbol!: (overrides?: CallOverrides) => Promise<string>;\r\n  totalSupply!: (overrides?: CallOverrides) => Promise<BigNumber>;\r\n\r\n  // Write\r\n  approve!: (spender: string, amount: BigNumberish, overrides?: Overrides) => Promise<ContractTransaction>;\r\n  decreaseAllowance!: (\r\n    spender: string,\r\n    subtractedValue: BigNumberish,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n  increaseAllowance!: (\r\n    spender: string,\r\n    addedValue: BigNumberish,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n  transfer!: (recipient: string, amount: BigNumberish, overrides?: Overrides) => Promise<ContractTransaction>;\r\n  transferFrom!: (\r\n    sender: string,\r\n    recipient: string,\r\n    amount: BigNumberish,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n\r\n  constructor(address: string, signer: Signer | Provider, ngZone: NgZone) {\r\n    super(address, ERC20_abi, signer, ngZone);\r\n  }\r\n\r\n  exist() {\r\n    return this.name()\r\n      .then(() => true)\r\n      .catch(() => false);\r\n  }\r\n\r\n  /** Listen on the changes of a balance of an address */\r\n  balanceChanges(address: string) {\r\n    const received = this.filters.Transfer(null, address);\r\n    const sent = this.filters.Transfer(address);\r\n    return combineLatest([\r\n      this.from(received),\r\n      this.from(sent),\r\n    ]).pipe(\r\n      map(([received, sent]) => erc20Balance(received, sent)),\r\n      shareReplay({ refCount: true, bufferSize: 1 })\r\n    );\r\n  }\r\n\r\n  async getMetadata() {\r\n    if (!this.metadata) {\r\n      const [name, symbol, decimals, totalSupply] = await Promise.all([\r\n        this.name(),\r\n        this.symbol(),\r\n        this.decimals(),\r\n        this.totalSupply(),\r\n      ]);\r\n      this.metadata = { name, symbol, decimals, totalSupply };\r\n    }\r\n    return this.metadata;\r\n  }\r\n}\r\n\r\nexport const ERC20_abi = [\r\n  { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\r\n      { indexed: true, internalType: \"address\", name: \"spender\", type: \"address\" },\r\n      { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\r\n    ],\r\n    name: \"Approval\",\r\n    type: \"event\",\r\n  },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\r\n      { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\r\n      { indexed: false, internalType: \"uint256\", name: \"value\", type: \"uint256\" },\r\n    ],\r\n    name: \"Transfer\",\r\n    type: \"event\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"owner\", type: \"address\" },\r\n      { internalType: \"address\", name: \"spender\", type: \"address\" },\r\n    ],\r\n    name: \"allowance\",\r\n    outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"spender\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\r\n    ],\r\n    name: \"approve\",\r\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\r\n    name: \"balanceOf\",\r\n    outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [],\r\n    name: \"decimals\",\r\n    outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"spender\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"subtractedValue\", type: \"uint256\" },\r\n    ],\r\n    name: \"decreaseAllowance\",\r\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"spender\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"addedValue\", type: \"uint256\" },\r\n    ],\r\n    name: \"increaseAllowance\",\r\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [],\r\n    name: \"name\",\r\n    outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [],\r\n    name: \"symbol\",\r\n    outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [],\r\n    name: \"totalSupply\",\r\n    outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"recipient\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\r\n    ],\r\n    name: \"transfer\",\r\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"sender\", type: \"address\" },\r\n      { internalType: \"address\", name: \"recipient\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\r\n    ],\r\n    name: \"transferFrom\",\r\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n];\r\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\r\nimport { BigNumber } from 'ethers';\r\nimport { ERC20Metadata } from './types';\r\nimport { formatERC20 } from './utils';\r\n\r\n\r\n@Pipe({ name: 'erc20' })\r\nexport class ERC20Pipe implements PipeTransform {\r\n  constructor(@Inject(LOCALE_ID) private _locale: string) {}\r\n  transform(balance: BigNumber, metadata: ERC20Metadata, digitInfo?: string) {\r\n    return formatERC20(balance, metadata, digitInfo, this._locale)\r\n  }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ERC20Pipe } from \"./pipes\";\r\n\r\n@NgModule({\r\n  declarations: [ERC20Pipe],\r\n  exports: [ERC20Pipe],\r\n  imports: [CommonModule]\r\n})\r\nexport class ERC20Module {}","import { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\nimport { isAddress } from \"@ethersproject/address\";\r\nimport { BigNumber } from \"@ethersproject/bignumber\";\r\n\r\nexport function address(): ValidatorFn  {\r\n  return (control: AbstractControl): ValidationErrors|null => {\r\n    if (isAddress(control.value)) return null;\r\n    return { address: true };\r\n  };\r\n}\r\n\r\nexport function ownToken(tokenIds: string[]): ValidatorFn  {\r\n  return (control: AbstractControl): ValidationErrors|null => {\r\n    if (tokenIds.includes(control.value)) return null;\r\n    return { ownToken: { owned: tokenIds, actual: control.value } };\r\n  };\r\n}\r\n\r\nexport function ownTokenAmount(tokens: Record<string, BigNumber>): ValidatorFn  {\r\n  return (control: AbstractControl): ValidationErrors|null => {\r\n    const { tokenId, amount } = control.value;\r\n    const quantity: BigNumber = typeof amount === 'number' ? BigNumber.from(amount) : amount; \r\n    if (tokens[tokenId].gt(quantity)) return null;\r\n    return {\r\n      ownTokenAmount: {\r\n        owned: tokens[tokenId] ?? BigNumber.from(0),\r\n        actual: control.value\r\n      }\r\n    };\r\n  };\r\n}\r\n\r\nexport const EthValidators = {\r\n  address,\r\n  ownToken,\r\n  ownTokenAmount,\r\n}","import { FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport type { Observable } from \"rxjs\";\r\nimport { EthValidators } from \"../../form\";\r\n\r\ninterface TransferControls {\r\n  to: string;\r\n  amount: number;\r\n}\r\n\r\nexport class ERC20FormTransfer extends FormGroup {\r\n  override value!: TransferControls;\r\n  override valueChanges!: Observable<TransferControls>;\r\n\r\n  constructor(value: Partial<TransferControls> = {}) {\r\n    super({\r\n      to: new FormControl(value.to, [Validators.required, EthValidators.address]),\r\n      amount: new FormControl(value.amount, [Validators.min(0)]),\r\n    })\r\n  }\r\n\r\n  setBalance(amount: number) {\r\n    this.get('amount')?.addValidators(Validators.max(amount));\r\n  }\r\n}","import type { BigNumber, Event } from \"ethers\";\r\n\r\nexport function erc721Tokens(received: Event[], sent: Event[]) {\r\n  const record: Record<string, number> = {};\r\n  for (const event of received) {\r\n    const tokenId = (event.args?.[2] as BigNumber).toString();\r\n    if (!tokenId) continue;\r\n    if (!record[tokenId]) record[tokenId] = 0;\r\n    record[tokenId]++;\r\n  }\r\n  for (const event of sent) {\r\n    const tokenId = (event.args?.[2] as BigNumber).toString();\r\n    if (!tokenId) continue;\r\n    record[tokenId]--;\r\n  }\r\n  return Object.entries(record)\r\n    .filter(([tokenId, amount]) => amount === 1)\r\n    .map(([tokenId]) => tokenId);\r\n}","import { NgContract, FilterParam, TypedFilter } from \"../../contract\";\r\nimport {\r\n  BigNumber,\r\n  Overrides,\r\n  CallOverrides,\r\n  Signer,\r\n  ContractTransaction,\r\n  BytesLike,\r\n  BigNumberish,\r\n  constants,\r\n} from \"ethers\";\r\nimport { Provider } from \"@ethersproject/providers\";\r\nimport { NgZone } from \"@angular/core\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { map } from 'rxjs/operators';\r\nimport { erc721Tokens } from \"./utils\";\r\n\r\nexport interface BaseERC721Events {\r\n  events: {\r\n    Approval: (owner: string, approved: string, tokenId: BigNumberish) => void;\r\n    ApprovalForAll: (owner: string, operator: string, approved: boolean) => void;\r\n    Transfer: (from: string, to: string, tokenId: BigNumberish) => void;\r\n  };\r\n  filters: {\r\n    Approval: (\r\n      owner?: FilterParam<string>,\r\n      approved?: FilterParam<string>,\r\n      tokenId?: FilterParam<BigNumberish>\r\n    ) => TypedFilter<\"Approval\">;\r\n    ApprovalForAll: (owner?: FilterParam<string>, operator?: FilterParam<string>) => TypedFilter<\"ApprovalForAll\">;\r\n    Transfer: (\r\n      from?: FilterParam<string>,\r\n      to?: FilterParam<string>,\r\n      tokenId?: FilterParam<BigNumberish>\r\n    ) => TypedFilter<\"Transfer\">;\r\n  };\r\n  queries: {\r\n    Approval: { owner: string; approved: string; tokenId: BigNumber };\r\n    ApprovalForAll: { owner: string; operator: string; approved: boolean };\r\n    Transfer: { from: string; to: string; tokenId: BigNumber };\r\n  };\r\n}\r\n\r\nexport class ERC721 extends NgContract<BaseERC721Events> {\r\n  // Read\r\n  balanceOf!: (owner: string, overrides?: CallOverrides) => Promise<BigNumber>;\r\n  getApproved!: (tokenId: BigNumberish, overrides?: CallOverrides) => Promise<string>;\r\n  isApprovedForAll!: (owner: string, operator: string, overrides?: CallOverrides) => Promise<boolean>;\r\n  name!: (overrides?: CallOverrides) => Promise<string>;\r\n  ownerOf!: (tokenId: BigNumberish, overrides?: CallOverrides) => Promise<string>;\r\n  supportsInterface!: (interfaceId: BytesLike, overrides?: CallOverrides) => Promise<boolean>;\r\n  symbol!: (overrides?: CallOverrides) => Promise<string>;\r\n  tokenURI!: (tokenId: BigNumberish, overrides?: CallOverrides) => Promise<string>;\r\n\r\n  // Write\r\n  approve!: (to: string, tokenId: BigNumberish, overrides?: Overrides) => Promise<ContractTransaction>;\r\n  setApprovalForAll!: (operator: string, approved: boolean, overrides?: Overrides) => Promise<ContractTransaction>;\r\n  transferFrom!: (\r\n    from: string,\r\n    to: string,\r\n    tokenId: BigNumberish,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n\r\n  allTokens$ = this.from(this.filters.Transfer(constants.AddressZero)).pipe(\r\n    map(events => events.map(event => event.args[2].toString()))\r\n  );\r\n\r\n  constructor(address: string, signer: Signer | Provider, zone: NgZone) {\r\n    super(address, ERC721_abi, signer, zone);\r\n  }\r\n\r\n  exist() {\r\n    return this.name()\r\n      .then(() => true)\r\n      .catch(() => false);\r\n  }\r\n\r\n  tokensChanges(address: string) {\r\n    const received = this.filters.Transfer(null, address);\r\n    const sent = this.filters.Transfer(address);\r\n    return combineLatest([\r\n      this.from(received),\r\n      this.from(sent),\r\n    ]).pipe(\r\n      map(([received, sent]) => erc721Tokens(received, sent))\r\n    );\r\n  }\r\n\r\n\r\n  safeTransferFrom(from: string, to: string, tokenId: BigNumberish, data?:BytesLike | Overrides, overrides?: Overrides) {\r\n    if (data && (data as BytesLike).length) {\r\n      return this.functions['safeTransferFrom(address,address,uint256,bytes)'](from, to, tokenId, data, overrides);\r\n    } else {\r\n      return this.functions['safeTransferFrom(address,address,uint256)'](from, to, tokenId, data);\r\n    }\r\n  }\r\n}\r\n\r\nexport const ERC721_abi = [\r\n  { inputs: [], stateMutability: \"nonpayable\", type: \"constructor\" },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\r\n      { indexed: true, internalType: \"address\", name: \"approved\", type: \"address\" },\r\n      { indexed: true, internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\r\n    ],\r\n    name: \"Approval\",\r\n    type: \"event\",\r\n  },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      { indexed: true, internalType: \"address\", name: \"owner\", type: \"address\" },\r\n      { indexed: true, internalType: \"address\", name: \"operator\", type: \"address\" },\r\n      { indexed: false, internalType: \"bool\", name: \"approved\", type: \"bool\" },\r\n    ],\r\n    name: \"ApprovalForAll\",\r\n    type: \"event\",\r\n  },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\r\n      { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\r\n      { indexed: true, internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\r\n    ],\r\n    name: \"Transfer\",\r\n    type: \"event\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"to\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\r\n    ],\r\n    name: \"approve\",\r\n    outputs: [],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }],\r\n    name: \"balanceOf\",\r\n    outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\r\n    name: \"getApproved\",\r\n    outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"owner\", type: \"address\" },\r\n      { internalType: \"address\", name: \"operator\", type: \"address\" },\r\n    ],\r\n    name: \"isApprovedForAll\",\r\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [],\r\n    name: \"name\",\r\n    outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\r\n    name: \"ownerOf\",\r\n    outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"from\", type: \"address\" },\r\n      { internalType: \"address\", name: \"to\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\r\n    ],\r\n    name: \"safeTransferFrom\",\r\n    outputs: [],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"from\", type: \"address\" },\r\n      { internalType: \"address\", name: \"to\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\r\n      { internalType: \"bytes\", name: \"_data\", type: \"bytes\" },\r\n    ],\r\n    name: \"safeTransferFrom\",\r\n    outputs: [],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"operator\", type: \"address\" },\r\n      { internalType: \"bool\", name: \"approved\", type: \"bool\" },\r\n    ],\r\n    name: \"setApprovalForAll\",\r\n    outputs: [],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [{ internalType: \"bytes4\", name: \"interfaceId\", type: \"bytes4\" }],\r\n    name: \"supportsInterface\",\r\n    outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [],\r\n    name: \"symbol\",\r\n    outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\r\n    name: \"tokenURI\",\r\n    outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\r\n    stateMutability: \"view\",\r\n    type: \"function\",\r\n  },\r\n  {\r\n    inputs: [\r\n      { internalType: \"address\", name: \"from\", type: \"address\" },\r\n      { internalType: \"address\", name: \"to\", type: \"address\" },\r\n      { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\r\n    ],\r\n    name: \"transferFrom\",\r\n    outputs: [],\r\n    stateMutability: \"nonpayable\",\r\n    type: \"function\",\r\n  },\r\n];\r\n","import { FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport type { Observable } from \"rxjs\";\r\nimport { EthValidators } from \"../../form\";\r\n\r\ninterface ERC721TransferControls {\r\n  from?: string;\r\n  to: string;\r\n  tokenId: number;\r\n}\r\n\r\ninterface ERC721MintControls {\r\n  to: string;\r\n  tokenId: number;\r\n  uri: string;\r\n}\r\n\r\n\r\n\r\nexport class ERC721FormTransfer extends FormGroup {\r\n  override value!: ERC721TransferControls;\r\n  override valueChanges!: Observable<ERC721TransferControls>;\r\n\r\n  constructor(value: Partial<ERC721TransferControls> = {}) {\r\n    super({\r\n      from: new FormControl(value.from, [EthValidators.address]),\r\n      to: new FormControl(value.to, [Validators.required, EthValidators.address]),\r\n      tokenId: new FormControl(value.tokenId, [Validators.required]),\r\n    })\r\n  }\r\n\r\n  setTokens(tokenIds: string[]) {\r\n    this.get('tokenId')?.addValidators(EthValidators.ownToken(tokenIds));\r\n  }\r\n}\r\n\r\n\r\nexport class ERC721FormMint extends FormGroup {\r\n  override value!: ERC721MintControls;\r\n  override valueChanges!: Observable<ERC721MintControls>;\r\n\r\n  constructor(value: Partial<ERC721MintControls> = {}) {\r\n    super({\r\n      to: new FormControl(value.to, [Validators.required, EthValidators.address]),\r\n      tokenId: new FormControl(value.tokenId, [Validators.required]),\r\n      uri: new FormControl(value.uri, [Validators.required]),\r\n    })\r\n  }\r\n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\nimport { Event } from \"ethers\";\r\nimport { BigNumber } from '@ethersproject/bignumber';\r\n\r\nexport function erc1155Tokens(\r\n  received: Event[],\r\n  batchReceived: Event[],\r\n  sent: Event[],\r\n  batchSent: Event[]\r\n) {\r\n  const tokens: Record<string, BigNumber> = {};\r\n  for (const event of received) { \r\n    const [operator, from, to, tokenId, amount] = event.args!;     \r\n    const id = (tokenId as BigNumber).toString();\r\n    if (!tokens[id]) tokens[id] = BigNumber.from(0);\r\n    tokens[id] = tokens[id].add(amount);\r\n  }\r\n\r\n  for (const event of batchReceived) {\r\n    const [operator, from, to, tokenIds, amounts] = event.args!;\r\n    for (let i = 0; i< tokenIds.length; i++) {\r\n      const id = (tokenIds[i] as BigNumber).toString();\r\n      if(!tokens[id]) tokens[id] = BigNumber.from(0);\r\n      tokens[id] = tokens[id].add(amounts[i]);\r\n    }\r\n  }\r\n\r\n  for (const event of sent) {\r\n    const [operator, from, to, tokenId, amount] = event.args!;\r\n    const id = (tokenId as BigNumber).toString();\r\n    tokens[id] = tokens[id].sub(amount);\r\n    if (tokens[id].isZero()) delete tokens[id];\r\n  }\r\n\r\n  for (const event of batchSent) {\r\n    const [operator, from, to, tokensId, amounts] = event.args!;\r\n    for (let i=0; i< tokensId.length; i++) {\r\n      const id = (tokensId[i] as BigNumber).toString();\r\n      tokens[id] = tokens[id].sub(amounts[i]);\r\n      if (tokens[id].isZero()) delete tokens[id];\r\n    }\r\n  }\r\n\r\n  return tokens;\r\n}","import { NgZone } from \"@angular/core\";\r\nimport { NgContract, FilterParam, TypedFilter } from \"../../contract\";\r\nimport {\r\n  BigNumber,\r\n  Overrides,\r\n  CallOverrides,\r\n  Signer,\r\n  ContractTransaction,\r\n  BytesLike,\r\n  BigNumberish,\r\n} from \"ethers\";\r\nimport { Provider } from \"@ethersproject/providers\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { erc1155Tokens } from \"./utils\";\r\n\r\n\r\nexport interface ERC1155Events {\r\n  events: {\r\n    ApprovalForAll: (account: string, operator: string, approved: boolean) => void;\r\n    TransferBatch: (operator: string, from: string, to: string, ids: BigNumber[], values: BigNumber[]) => void;\r\n    TransferSingle: (operator: string, from: string, to: string, id: BigNumber, value: BigNumber) => void;\r\n    URI: (value: string, id: BigNumber) => void;\r\n  };\r\n  filters: {\r\n    ApprovalForAll: (account?: FilterParam<string>, operator?: FilterParam<string>) => TypedFilter<\"ApprovalForAll\">;\r\n    TransferBatch: (\r\n      operator?: FilterParam<string>,\r\n      from?: FilterParam<string>,\r\n      to?: FilterParam<string>\r\n    ) => TypedFilter<\"TransferBatch\">;\r\n    TransferSingle: (\r\n      operator?: FilterParam<string>,\r\n      from?: FilterParam<string>,\r\n      to?: FilterParam<string>\r\n    ) => TypedFilter<\"TransferSingle\">;\r\n    URI: (id?: FilterParam<BigNumberish>) => TypedFilter<\"URI\">;\r\n  };\r\n  queries: {\r\n    ApprovalForAll: { account: string; operator: string; approved: boolean };\r\n    OwnershipTransferred: { previousOwner: string; newOwner: string };\r\n    TransferBatch: { operator: string; from: string; to: string; ids: BigNumber[]; values: BigNumber[] };\r\n    TransferSingle: { operator: string; from: string; to: string; id: BigNumber; value: BigNumber };\r\n    URI: { value: string; id: BigNumber };\r\n  };\r\n}\r\n\r\nexport class ERC1155 extends NgContract<ERC1155Events> {\r\n  // Read\r\n  balanceOf!: (account: string, id: BigNumberish, overrides?: CallOverrides) => Promise<BigNumber>;\r\n  balanceOfBatch!: (accounts: string[], ids: BigNumberish[], overrides?: CallOverrides) => Promise<BigNumber[]>;\r\n  isApprovedForAll!: (account: string, operator: string, overrides?: CallOverrides) => Promise<boolean>;\r\n  supportsInterface!: (interfaceId: BytesLike, overrides?: CallOverrides) => Promise<boolean>;\r\n  uri!: (arg: BigNumberish, overrides?: CallOverrides) => Promise<string>;\r\n  owner!: (overrides?: CallOverrides) => Promise<string>;\r\n\r\n  // Write\r\n  mint!: (\r\n    account: string,\r\n    id: BigNumberish,\r\n    amount: BigNumberish,\r\n    data: BytesLike,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n  mintBatch!: (\r\n    to: string,\r\n    ids: BigNumberish[],\r\n    amounts: BigNumberish[],\r\n    data: BytesLike,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n  renounceOwnership!: (overrides?: Overrides) => Promise<ContractTransaction>;\r\n  safeBatchTransferFrom!: (\r\n    from: string,\r\n    to: string,\r\n    ids: BigNumberish[],\r\n    amounts: BigNumberish[],\r\n    data: BytesLike,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n  safeTransferFrom!: (\r\n    from: string,\r\n    to: string,\r\n    id: BigNumberish,\r\n    amount: BigNumberish,\r\n    data: BytesLike,\r\n    overrides?: Overrides\r\n  ) => Promise<ContractTransaction>;\r\n  setApprovalForAll!: (operator: string, approved: boolean, overrides?: Overrides) => Promise<ContractTransaction>;\r\n  setURI!: (newuri: string, overrides?: Overrides) => Promise<ContractTransaction>;\r\n  transferOwnership!: (newOwner: string, overrides?: Overrides) => Promise<ContractTransaction>;\r\n  \r\n\r\n  constructor(address: string, signer: Signer | Provider, zone: NgZone) {\r\n    super(address, ERC1155_abi, signer, zone);\r\n  }\r\n\r\n  exist() {\r\n    return this.uri(0)\r\n      .then(() => true)\r\n      .catch(() => false);\r\n  }\r\n\r\n  tokensChanges(address: string) {\r\n    const received = this.filters.TransferSingle(null, null, address);\r\n    const batchReceived = this.filters.TransferBatch(null, null, address);\r\n    const sent = this.filters.TransferSingle(null, address);\r\n    const batchSent = this.filters.TransferBatch(null, address);\r\n\r\n    return combineLatest([\r\n      this.from(received),\r\n      this.from(batchReceived),\r\n      this.from(sent),\r\n      this.from(batchSent),\r\n    ]).pipe(\r\n      map(([received, batchReceived, sent, batchSent]) => erc1155Tokens(received, batchReceived, sent, batchSent))\r\n    );\r\n  }\r\n}\r\n\r\nexport const ERC1155_abi = [{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newuri\",\"type\":\"string\"}],\"name\":\"setURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}];\r\n","import { FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport type { BigNumber } from '@ethersproject/bignumber';\r\nimport type { Observable } from \"rxjs\";\r\nimport { EthValidators } from \"../../form\";\r\n\r\ninterface ERC1155TransferControls {\r\n  from?: string;\r\n  to: string;\r\n  tokenId: number;\r\n  amount: number;\r\n}\r\n\r\ninterface ERC1155MintControls {\r\n  to: string;\r\n  tokenId: number;\r\n  amount: number;\r\n  data?: string;\r\n  uri?: string;\r\n}\r\n\r\n\r\n\r\nexport class ERC1155FormTransfer extends FormGroup {\r\n  override value!: ERC1155TransferControls;\r\n  override valueChanges!: Observable<ERC1155TransferControls>;\r\n\r\n  constructor(value: Partial<ERC1155TransferControls> = {}) {\r\n    super({\r\n      from: new FormControl(value.from, [EthValidators.address]),\r\n      to: new FormControl(value.to, [Validators.required, EthValidators.address]),\r\n      tokenId: new FormControl(value.tokenId, [Validators.required]),\r\n      amount: new FormControl(value.amount, [Validators.required, Validators.min(0)])\r\n    })\r\n  }\r\n\r\n  setTokens(tokens: Record<string, BigNumber>) {\r\n    this.addValidators(EthValidators.ownTokenAmount(tokens));\r\n  }\r\n}\r\n\r\n\r\nexport class ERC1155FormMint extends FormGroup {\r\n  override value!: ERC1155MintControls;\r\n  override valueChanges!: Observable<ERC1155MintControls>;\r\n\r\n  constructor(value: Partial<ERC1155MintControls> = {}) {\r\n    super({\r\n      to: new FormControl(value.to, [Validators.required, EthValidators.address]),\r\n      tokenId: new FormControl(value.tokenId, [Validators.required]),\r\n      amount: new FormControl(value.amount, [Validators.required]),\r\n      uri: new FormControl(value.uri),\r\n      data: new FormControl(value.data)\r\n    })\r\n  }\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from \"@angular/router\";\r\nimport { map, tap } from \"rxjs\";\r\nimport { SUPPORTED_CHAINS, toChainIndex } from \"./chain\";\r\nimport { ERC1193 } from \"./erc1193\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HasInjectedProviderGuard implements CanActivate {\r\n  public previous?: string;\r\n\r\n  constructor(private router: Router) {}\r\n\r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    if ('ethereum' in window) return true;\r\n    this.previous = state.url;\r\n    const redirect = route.data['hasInjectedProviderRedirect'] ?? '/no-injected-provider';\r\n    // Navigate to avoid next guard to run\r\n    return this.router.navigate([redirect]);\r\n  }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HasWalletGuard implements CanActivate {\r\n  public previous?: string;\r\n\r\n  constructor(private erc1193: ERC1193, private router: Router) {}\r\n\r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    if (this.erc1193.wallets.length) return true;\r\n    this.previous = state.url;\r\n    const redirect = route.data['hasWalletRedirect'] ?? '/no-wallet';\r\n    // Navigate to avoid next guard to run\r\n    return this.router.navigate([redirect]);\r\n  }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IsSupportedChainGuard {\r\n  public previous?: string;\r\n  constructor(\r\n    private router: Router,\r\n    private erc1193: ERC1193,\r\n    @Inject(SUPPORTED_CHAINS) private supportedChains: '*' | number[],\r\n  ) {}\r\n  \r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    this.previous = state.url;\r\n    if (this.supportedChains === '*') return true;\r\n    if (!this.erc1193.chainId) return false;\r\n    const chainIndex = toChainIndex(this.erc1193.chainId);\r\n    if (this.supportedChains.includes(chainIndex)) return true;\r\n    const redirect = route.data['isSupportedChainRedirect'] ?? '/unsupported-chain';\r\n    return this.router.navigate([redirect]);\r\n  }\r\n}\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IsConnectedGuard implements CanActivate {\r\n  public previous?: string;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private erc1193: ERC1193\r\n  ) {}\r\n  \r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    this.previous = state.url;\r\n    const redirect = route.data['isConnectedRedirect'] ?? '/not-connected';\r\n    return this.erc1193.connected$.pipe(\r\n      map(isConnected => isConnected || this.router.parseUrl(redirect))\r\n    );\r\n  }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HasSignerGuard implements CanActivate {\r\n  public previous?: string;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private erc1193: ERC1193\r\n  ) {}\r\n  \r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    this.previous = state.url;\r\n    const redirect = route.data['hasSignerRedirect'] ?? '/no-signer';\r\n    return this.erc1193.account$.pipe(\r\n      tap(console.log),\r\n      map(account => !!account || this.router.parseUrl(redirect))\r\n    );\r\n  }\r\n}\r\n\r\n\r\n","import { getDefaultProvider, Provider } from '@ethersproject/providers';\r\nimport { Networkish } from '@ethersproject/networks';\r\n\r\nexport function rpcProvider(network?: Networkish, options?: any) {\r\n  return { provide: Provider, useFactory: () => getDefaultProvider(network, options) };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["exist","map","shareReplay","BigNumber","Provider"],"mappings":"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"}