diff --git a/terminus-app/contracts/ERC1155WithTerminusStorage.ts b/terminus-app/contracts/ERC1155WithTerminusStorage.ts index b4cfe85..14972e3 100644 --- a/terminus-app/contracts/ERC1155WithTerminusStorage.ts +++ b/terminus-app/contracts/ERC1155WithTerminusStorage.ts @@ -93,6 +93,11 @@ export interface ERC1155WithTerminusStorage extends BaseContract { operator: string ): NonPayableTransactionObject; + poolOfOwnerByIndex( + owner: string, + index: number | string | BN + ): NonPayableTransactionObject; + safeBatchTransferFrom( from: string, to: string, @@ -118,6 +123,10 @@ export interface ERC1155WithTerminusStorage extends BaseContract { interfaceId: string | number[] ): NonPayableTransactionObject; + totalPools(): NonPayableTransactionObject; + + totalPoolsByOwner(owner: string): NonPayableTransactionObject; + uri(poolID: number | string | BN): NonPayableTransactionObject; }; events: { diff --git a/terminus-app/contracts/ERC1155WithTerminusStorageFixture.ts b/terminus-app/contracts/ERC1155WithTerminusStorageFixture.ts new file mode 100644 index 0000000..6759430 --- /dev/null +++ b/terminus-app/contracts/ERC1155WithTerminusStorageFixture.ts @@ -0,0 +1,173 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import BN from "bn.js"; +import { ContractOptions } from "web3-eth-contract"; +import { EventLog } from "web3-core"; +import { EventEmitter } from "events"; +import { + Callback, + PayableTransactionObject, + NonPayableTransactionObject, + BlockType, + ContractEventLog, + BaseContract, +} from "./types"; + +export interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export type ApprovalForAll = ContractEventLog<{ + account: string; + operator: string; + approved: boolean; + 0: string; + 1: string; + 2: boolean; +}>; +export type TransferBatch = ContractEventLog<{ + operator: string; + from: string; + to: string; + ids: string[]; + values: string[]; + 0: string; + 1: string; + 2: string; + 3: string[]; + 4: string[]; +}>; +export type TransferSingle = ContractEventLog<{ + operator: string; + from: string; + to: string; + id: string; + value: string; + 0: string; + 1: string; + 2: string; + 3: string; + 4: string; +}>; +export type URI = ContractEventLog<{ + value: string; + id: string; + 0: string; + 1: string; +}>; + +export interface ERC1155WithTerminusStorageFixture extends BaseContract { + constructor( + jsonInterface: any[], + address?: string, + options?: ContractOptions + ): ERC1155WithTerminusStorageFixture; + clone(): ERC1155WithTerminusStorageFixture; + methods: { + approveForPool( + poolID: number | string | BN, + operator: string + ): NonPayableTransactionObject; + + balanceOf( + account: string, + id: number | string | BN + ): NonPayableTransactionObject; + + balanceOfBatch( + accounts: string[], + ids: (number | string | BN)[] + ): NonPayableTransactionObject; + + isApprovedForAll( + account: string, + operator: string + ): NonPayableTransactionObject; + + isApprovedForPool( + poolID: number | string | BN, + operator: string + ): NonPayableTransactionObject; + + isFixture(): NonPayableTransactionObject; + + safeBatchTransferFrom( + from: string, + to: string, + ids: (number | string | BN)[], + amounts: (number | string | BN)[], + data: string | number[] + ): NonPayableTransactionObject; + + safeTransferFrom( + from: string, + to: string, + id: number | string | BN, + amount: number | string | BN, + data: string | number[] + ): NonPayableTransactionObject; + + setApprovalForAll( + operator: string, + approved: boolean + ): NonPayableTransactionObject; + + supportsInterface( + interfaceId: string | number[] + ): NonPayableTransactionObject; + + uri(poolID: number | string | BN): NonPayableTransactionObject; + }; + events: { + ApprovalForAll(cb?: Callback): EventEmitter; + ApprovalForAll( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + TransferBatch(cb?: Callback): EventEmitter; + TransferBatch( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + TransferSingle(cb?: Callback): EventEmitter; + TransferSingle( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + URI(cb?: Callback): EventEmitter; + URI(options?: EventOptions, cb?: Callback): EventEmitter; + + allEvents(options?: EventOptions, cb?: Callback): EventEmitter; + }; + + once(event: "ApprovalForAll", cb: Callback): void; + once( + event: "ApprovalForAll", + options: EventOptions, + cb: Callback + ): void; + + once(event: "TransferBatch", cb: Callback): void; + once( + event: "TransferBatch", + options: EventOptions, + cb: Callback + ): void; + + once(event: "TransferSingle", cb: Callback): void; + once( + event: "TransferSingle", + options: EventOptions, + cb: Callback + ): void; + + once(event: "URI", cb: Callback): void; + once(event: "URI", options: EventOptions, cb: Callback): void; +} diff --git a/terminus-app/contracts/IERC1155Enumerable.ts b/terminus-app/contracts/IERC1155Enumerable.ts new file mode 100644 index 0000000..53cd415 --- /dev/null +++ b/terminus-app/contracts/IERC1155Enumerable.ts @@ -0,0 +1,168 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import BN from "bn.js"; +import { ContractOptions } from "web3-eth-contract"; +import { EventLog } from "web3-core"; +import { EventEmitter } from "events"; +import { + Callback, + PayableTransactionObject, + NonPayableTransactionObject, + BlockType, + ContractEventLog, + BaseContract, +} from "./types"; + +export interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export type ApprovalForAll = ContractEventLog<{ + account: string; + operator: string; + approved: boolean; + 0: string; + 1: string; + 2: boolean; +}>; +export type TransferBatch = ContractEventLog<{ + operator: string; + from: string; + to: string; + ids: string[]; + values: string[]; + 0: string; + 1: string; + 2: string; + 3: string[]; + 4: string[]; +}>; +export type TransferSingle = ContractEventLog<{ + operator: string; + from: string; + to: string; + id: string; + value: string; + 0: string; + 1: string; + 2: string; + 3: string; + 4: string; +}>; +export type URI = ContractEventLog<{ + value: string; + id: string; + 0: string; + 1: string; +}>; + +export interface IERC1155Enumerable extends BaseContract { + constructor( + jsonInterface: any[], + address?: string, + options?: ContractOptions + ): IERC1155Enumerable; + clone(): IERC1155Enumerable; + methods: { + balanceOf( + account: string, + id: number | string | BN + ): NonPayableTransactionObject; + + balanceOfBatch( + accounts: string[], + ids: (number | string | BN)[] + ): NonPayableTransactionObject; + + isApprovedForAll( + account: string, + operator: string + ): NonPayableTransactionObject; + + poolOfOwnerByIndex( + owner: string, + index: number | string | BN + ): NonPayableTransactionObject; + + safeBatchTransferFrom( + from: string, + to: string, + ids: (number | string | BN)[], + amounts: (number | string | BN)[], + data: string | number[] + ): NonPayableTransactionObject; + + safeTransferFrom( + from: string, + to: string, + id: number | string | BN, + amount: number | string | BN, + data: string | number[] + ): NonPayableTransactionObject; + + setApprovalForAll( + operator: string, + approved: boolean + ): NonPayableTransactionObject; + + supportsInterface( + interfaceId: string | number[] + ): NonPayableTransactionObject; + + totalPools(): NonPayableTransactionObject; + + totalPoolsByOwner(owner: string): NonPayableTransactionObject; + }; + events: { + ApprovalForAll(cb?: Callback): EventEmitter; + ApprovalForAll( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + TransferBatch(cb?: Callback): EventEmitter; + TransferBatch( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + TransferSingle(cb?: Callback): EventEmitter; + TransferSingle( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + URI(cb?: Callback): EventEmitter; + URI(options?: EventOptions, cb?: Callback): EventEmitter; + + allEvents(options?: EventOptions, cb?: Callback): EventEmitter; + }; + + once(event: "ApprovalForAll", cb: Callback): void; + once( + event: "ApprovalForAll", + options: EventOptions, + cb: Callback + ): void; + + once(event: "TransferBatch", cb: Callback): void; + once( + event: "TransferBatch", + options: EventOptions, + cb: Callback + ): void; + + once(event: "TransferSingle", cb: Callback): void; + once( + event: "TransferSingle", + options: EventOptions, + cb: Callback + ): void; + + once(event: "URI", cb: Callback): void; + once(event: "URI", options: EventOptions, cb: Callback): void; +} diff --git a/terminus-app/contracts/LibTerminusFixture.ts b/terminus-app/contracts/LibTerminusFixture.ts new file mode 100644 index 0000000..da9374c --- /dev/null +++ b/terminus-app/contracts/LibTerminusFixture.ts @@ -0,0 +1,79 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import BN from "bn.js"; +import { ContractOptions } from "web3-eth-contract"; +import { EventLog } from "web3-core"; +import { EventEmitter } from "events"; +import { + Callback, + PayableTransactionObject, + NonPayableTransactionObject, + BlockType, + ContractEventLog, + BaseContract, +} from "./types"; + +export interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export type ControlTransferred = ContractEventLog<{ + previousController: string; + newController: string; + 0: string; + 1: string; +}>; +export type PoolControlTransferred = ContractEventLog<{ + poolID: string; + previousController: string; + newController: string; + 0: string; + 1: string; + 2: string; +}>; + +export interface LibTerminusFixture extends BaseContract { + constructor( + jsonInterface: any[], + address?: string, + options?: ContractOptions + ): LibTerminusFixture; + clone(): LibTerminusFixture; + methods: {}; + events: { + ControlTransferred(cb?: Callback): EventEmitter; + ControlTransferred( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + PoolControlTransferred(cb?: Callback): EventEmitter; + PoolControlTransferred( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + allEvents(options?: EventOptions, cb?: Callback): EventEmitter; + }; + + once(event: "ControlTransferred", cb: Callback): void; + once( + event: "ControlTransferred", + options: EventOptions, + cb: Callback + ): void; + + once( + event: "PoolControlTransferred", + cb: Callback + ): void; + once( + event: "PoolControlTransferred", + options: EventOptions, + cb: Callback + ): void; +} diff --git a/terminus-app/contracts/PoolControllerEnumeration.ts b/terminus-app/contracts/PoolControllerEnumeration.ts new file mode 100644 index 0000000..505e5a2 --- /dev/null +++ b/terminus-app/contracts/PoolControllerEnumeration.ts @@ -0,0 +1,37 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import BN from "bn.js"; +import { ContractOptions } from "web3-eth-contract"; +import { EventLog } from "web3-core"; +import { EventEmitter } from "events"; +import { + Callback, + PayableTransactionObject, + NonPayableTransactionObject, + BlockType, + ContractEventLog, + BaseContract, +} from "./types"; + +export interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export interface PoolControllerEnumeration extends BaseContract { + constructor( + jsonInterface: any[], + address?: string, + options?: ContractOptions + ): PoolControllerEnumeration; + clone(): PoolControllerEnumeration; + methods: { + init(): NonPayableTransactionObject; + }; + events: { + allEvents(options?: EventOptions, cb?: Callback): EventEmitter; + }; +} diff --git a/terminus-app/contracts/TerminusFacet.ts b/terminus-app/contracts/TerminusFacet.ts index b9c3268..7a74bce 100644 --- a/terminus-app/contracts/TerminusFacet.ts +++ b/terminus-app/contracts/TerminusFacet.ts @@ -147,6 +147,11 @@ export interface TerminusFacet extends BaseContract { amounts: (number | string | BN)[] ): NonPayableTransactionObject; + poolOfOwnerByIndex( + owner: string, + index: number | string | BN + ): NonPayableTransactionObject; + safeBatchTransferFrom( from: string, to: string, @@ -208,6 +213,8 @@ export interface TerminusFacet extends BaseContract { totalPools(): NonPayableTransactionObject; + totalPoolsByOwner(owner: string): NonPayableTransactionObject; + uri(poolID: number | string | BN): NonPayableTransactionObject; withdrawPayments( diff --git a/terminus-app/contracts/TerminusFacetFixture.ts b/terminus-app/contracts/TerminusFacetFixture.ts new file mode 100644 index 0000000..9aac86a --- /dev/null +++ b/terminus-app/contracts/TerminusFacetFixture.ts @@ -0,0 +1,281 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import BN from "bn.js"; +import { ContractOptions } from "web3-eth-contract"; +import { EventLog } from "web3-core"; +import { EventEmitter } from "events"; +import { + Callback, + PayableTransactionObject, + NonPayableTransactionObject, + BlockType, + ContractEventLog, + BaseContract, +} from "./types"; + +export interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export type ApprovalForAll = ContractEventLog<{ + account: string; + operator: string; + approved: boolean; + 0: string; + 1: string; + 2: boolean; +}>; +export type PoolMintBatch = ContractEventLog<{ + id: string; + operator: string; + from: string; + toAddresses: string[]; + amounts: string[]; + 0: string; + 1: string; + 2: string; + 3: string[]; + 4: string[]; +}>; +export type TransferBatch = ContractEventLog<{ + operator: string; + from: string; + to: string; + ids: string[]; + values: string[]; + 0: string; + 1: string; + 2: string; + 3: string[]; + 4: string[]; +}>; +export type TransferSingle = ContractEventLog<{ + operator: string; + from: string; + to: string; + id: string; + value: string; + 0: string; + 1: string; + 2: string; + 3: string; + 4: string; +}>; +export type URI = ContractEventLog<{ + value: string; + id: string; + 0: string; + 1: string; +}>; + +export interface TerminusFacetFixture extends BaseContract { + constructor( + jsonInterface: any[], + address?: string, + options?: ContractOptions + ): TerminusFacetFixture; + clone(): TerminusFacetFixture; + methods: { + approveForPool( + poolID: number | string | BN, + operator: string + ): NonPayableTransactionObject; + + balanceOf( + account: string, + id: number | string | BN + ): NonPayableTransactionObject; + + balanceOfBatch( + accounts: string[], + ids: (number | string | BN)[] + ): NonPayableTransactionObject; + + burn( + from: string, + poolID: number | string | BN, + amount: number | string | BN + ): NonPayableTransactionObject; + + contractURI(): NonPayableTransactionObject; + + createPoolV1( + _capacity: number | string | BN, + _transferable: boolean, + _burnable: boolean + ): NonPayableTransactionObject; + + createSimplePool( + _capacity: number | string | BN + ): NonPayableTransactionObject; + + isApprovedForAll( + account: string, + operator: string + ): NonPayableTransactionObject; + + isApprovedForPool( + poolID: number | string | BN, + operator: string + ): NonPayableTransactionObject; + + isFixture(): NonPayableTransactionObject; + + mint( + to: string, + poolID: number | string | BN, + amount: number | string | BN, + data: string | number[] + ): NonPayableTransactionObject; + + mintBatch( + to: string, + poolIDs: (number | string | BN)[], + amounts: (number | string | BN)[], + data: string | number[] + ): NonPayableTransactionObject; + + paymentToken(): NonPayableTransactionObject; + + poolBasePrice(): NonPayableTransactionObject; + + poolMintBatch( + id: number | string | BN, + toAddresses: string[], + amounts: (number | string | BN)[] + ): NonPayableTransactionObject; + + safeBatchTransferFrom( + from: string, + to: string, + ids: (number | string | BN)[], + amounts: (number | string | BN)[], + data: string | number[] + ): NonPayableTransactionObject; + + safeTransferFrom( + from: string, + to: string, + id: number | string | BN, + amount: number | string | BN, + data: string | number[] + ): NonPayableTransactionObject; + + setApprovalForAll( + operator: string, + approved: boolean + ): NonPayableTransactionObject; + + setContractURI(_contractURI: string): NonPayableTransactionObject; + + setController(newController: string): NonPayableTransactionObject; + + setPaymentToken(newPaymentToken: string): NonPayableTransactionObject; + + setPoolBasePrice( + newBasePrice: number | string | BN + ): NonPayableTransactionObject; + + setPoolController( + poolID: number | string | BN, + newController: string + ): NonPayableTransactionObject; + + setURI( + poolID: number | string | BN, + poolURI: string + ): NonPayableTransactionObject; + + supportsInterface( + interfaceId: string | number[] + ): NonPayableTransactionObject; + + terminusController(): NonPayableTransactionObject; + + terminusPoolCapacity( + poolID: number | string | BN + ): NonPayableTransactionObject; + + terminusPoolController( + poolID: number | string | BN + ): NonPayableTransactionObject; + + terminusPoolSupply( + poolID: number | string | BN + ): NonPayableTransactionObject; + + totalPools(): NonPayableTransactionObject; + + uri(poolID: number | string | BN): NonPayableTransactionObject; + + withdrawPayments( + toAddress: string, + amount: number | string | BN + ): NonPayableTransactionObject; + }; + events: { + ApprovalForAll(cb?: Callback): EventEmitter; + ApprovalForAll( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + PoolMintBatch(cb?: Callback): EventEmitter; + PoolMintBatch( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + TransferBatch(cb?: Callback): EventEmitter; + TransferBatch( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + TransferSingle(cb?: Callback): EventEmitter; + TransferSingle( + options?: EventOptions, + cb?: Callback + ): EventEmitter; + + URI(cb?: Callback): EventEmitter; + URI(options?: EventOptions, cb?: Callback): EventEmitter; + + allEvents(options?: EventOptions, cb?: Callback): EventEmitter; + }; + + once(event: "ApprovalForAll", cb: Callback): void; + once( + event: "ApprovalForAll", + options: EventOptions, + cb: Callback + ): void; + + once(event: "PoolMintBatch", cb: Callback): void; + once( + event: "PoolMintBatch", + options: EventOptions, + cb: Callback + ): void; + + once(event: "TransferBatch", cb: Callback): void; + once( + event: "TransferBatch", + options: EventOptions, + cb: Callback + ): void; + + once(event: "TransferSingle", cb: Callback): void; + once( + event: "TransferSingle", + options: EventOptions, + cb: Callback + ): void; + + once(event: "URI", cb: Callback): void; + once(event: "URI", options: EventOptions, cb: Callback): void; +} diff --git a/terminus-app/contracts/TerminusInitializerFixture.ts b/terminus-app/contracts/TerminusInitializerFixture.ts new file mode 100644 index 0000000..5e75b8d --- /dev/null +++ b/terminus-app/contracts/TerminusInitializerFixture.ts @@ -0,0 +1,37 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import BN from "bn.js"; +import { ContractOptions } from "web3-eth-contract"; +import { EventLog } from "web3-core"; +import { EventEmitter } from "events"; +import { + Callback, + PayableTransactionObject, + NonPayableTransactionObject, + BlockType, + ContractEventLog, + BaseContract, +} from "./types"; + +export interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export interface TerminusInitializerFixture extends BaseContract { + constructor( + jsonInterface: any[], + address?: string, + options?: ContractOptions + ): TerminusInitializerFixture; + clone(): TerminusInitializerFixture; + methods: { + init(): NonPayableTransactionObject; + }; + events: { + allEvents(options?: EventOptions, cb?: Callback): EventEmitter; + }; +} diff --git a/terminus-app/contracts/TestFixture.ts b/terminus-app/contracts/TestFixture.ts new file mode 100644 index 0000000..5752578 --- /dev/null +++ b/terminus-app/contracts/TestFixture.ts @@ -0,0 +1,37 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import BN from "bn.js"; +import { ContractOptions } from "web3-eth-contract"; +import { EventLog } from "web3-core"; +import { EventEmitter } from "events"; +import { + Callback, + PayableTransactionObject, + NonPayableTransactionObject, + BlockType, + ContractEventLog, + BaseContract, +} from "./types"; + +export interface EventOptions { + filter?: object; + fromBlock?: BlockType; + topics?: string[]; +} + +export interface TestFixture extends BaseContract { + constructor( + jsonInterface: any[], + address?: string, + options?: ContractOptions + ): TestFixture; + clone(): TestFixture; + methods: { + isFixture(): NonPayableTransactionObject; + }; + events: { + allEvents(options?: EventOptions, cb?: Callback): EventEmitter; + }; +} diff --git a/terminus-app/src/components/PoolCard.tsx b/terminus-app/src/components/PoolCard.tsx index 063c959..659ce4a 100644 --- a/terminus-app/src/components/PoolCard.tsx +++ b/terminus-app/src/components/PoolCard.tsx @@ -26,11 +26,7 @@ const PoolCard = ({ poolId }: { poolId: string }) => { poolId: poolId, }); - const web3Provider = useContext(Web3Context); - const isOwner = - terminusPool.terminusFacetCache.data?.controller === web3Provider.account; - - if (!isOwner || terminusPool.terminusFacetCache.isLoading) return ""; + if (terminusPool.terminusFacetCache.isLoading) return ; return (
async () => { - console.log("getTerminusFacetState"); - const terminusFacet = contract as TerminusFacet; - // const controller = await terminusFacet.methods.terminusController().call(); - const poolBasePrice = await terminusFacet.methods.poolBasePrice().call(); - console.log("poolBasePrice", poolBasePrice); - const paymentToken = await terminusFacet.methods.paymentToken().call(); - const contractURI = await terminusFacet.methods.contractURI().call(); - const totalPools = await terminusFacet.methods.totalPools().call(); +export const getTerminusFacetState = + (contract: BaseContract, owner?: string) => async () => { + console.log("getTerminusFacetState"); + const terminusFacet = contract as TerminusFacet; + // const controller = await terminusFacet.methods.terminusController().call(); + const poolBasePrice = await terminusFacet.methods.poolBasePrice().call(); + console.log("poolBasePrice", poolBasePrice); + const paymentToken = await terminusFacet.methods.paymentToken().call(); + const contractURI = await terminusFacet.methods.contractURI().call(); + const totalPools = await terminusFacet.methods.totalPools().call(); + let numberOfOwnedPools = "0"; + let ownedPoolIds = []; + if (owner) { + numberOfOwnedPools = await terminusFacet.methods + .totalPoolsByOwner(owner) + .call(); - return { poolBasePrice, paymentToken, contractURI, totalPools }; -}; + if (numberOfOwnedPools !== "0") { + const n = new Number(numberOfOwnedPools); + for (let i = 0; i < n; i++) { + const poolId = await terminusFacet.methods + .poolOfOwnerByIndex(owner, i) + .call(); + ownedPoolIds.push(poolId); + } + } + } + + return { + poolBasePrice, + paymentToken, + contractURI, + totalPools, + numberOfOwnedPools, + ownedPoolIds, + }; + }; export const getTerminusFacetPoolState = (contract: BaseContract, poolId: string) => async () => { @@ -37,6 +62,13 @@ export const getTerminusFacetPoolState = return { controller, supply, uri, capacity }; }; +export const getNumberOfPoolsByOwner = + (contract: BaseContract, owner: string) => async () => { + const terminusFacet = contract as TerminusFacet; + + return number; + }; + export const createSimplePool = (contract: BaseContract, defaultTxConfig: any) => async ({