add tests

This commit is contained in:
Ayush Acharjya
2024-10-26 12:55:31 +01:00
parent 80c67218fc
commit 7971c47875
12 changed files with 1682 additions and 1855 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,10 @@
pragma solidity >=0.8.2 <0.9.0; pragma solidity >=0.8.2 <0.9.0;
import {ContractRegistry} from "@flarenetwork/flare-periphery-contracts/coston2/ContractRegistry.sol";
/* THIS IS A TEST IMPORT, in production use: import {FtsoV2Interface} from "@flarenetwork/flare-periphery-contracts/coston2/FtsoV2Interface.sol"; */
import {TestFtsoV2Interface} from "@flarenetwork/flare-periphery-contracts/coston2/TestFtsoV2Interface.sol";
contract EventManager { contract EventManager {
struct Event { struct Event {
@@ -13,7 +17,7 @@ contract EventManager {
uint256 eventDate; uint256 eventDate;
string[] images; // array of image URLs string[] images; // array of image URLs
uint256[] tickets; uint256[] tickets;
address eventHost; address payable eventHost;
} }
struct Ticket { struct Ticket {
@@ -22,6 +26,11 @@ contract EventManager {
uint256 eventId; uint256 eventId;
} }
event EventCreated(uint256 eventId, string name, uint256 eventDate);
event TicketPurchased(uint256 ticketId, uint256 eventId, address buyer, uint256 price);
event TicketTransferred(uint256 ticketId, address from, address to);
event TicketTransferApproved(uint256 ticketId, address owner, address trustee);
mapping(uint256 => Event) public events; mapping(uint256 => Event) public events;
mapping(uint256 => Ticket) public tickets; mapping(uint256 => Ticket) public tickets;
@@ -32,12 +41,31 @@ contract EventManager {
uint256 public eventCounter; uint256 public eventCounter;
uint256 public ticketCounter; uint256 public ticketCounter;
function centsToFlare(uint256 _cents) public view returns (uint256 _flr) { function getFtsoV2CurrentFeedValues() public view returns (
return _cents*14/10; uint256[] memory _feedValues,
int8[] memory _decimals,
uint64 _timestamp
) {
return ftsoV2.getFeedsById(feedIds);
} }
function power(uint base, int8 exponent) public pure returns (uint) { function getFlareFeed() public view returns (uint256 _feedValue, int8 _decimals, uint64 _timestamp) {
require(exponent >= 0, 'Exponent must be non-negative'); uint256[] memory feedValues;
int8[] memory decimals;
uint64 timestamp;
(feedValues, decimals, timestamp) = ftsoV2.getFeedsById(feedIds);
return (feedValues[0], decimals[0], timestamp);
}
function centsToFlare(uint256 _cents) public view returns (uint256 _flr) {
uint256 feedValue;
int8 decimals;
(feedValue, decimals, ) = getFlareFeed();
return _cents * power(10, decimals) * 1 ether / 100 / feedValue;
}
function power(uint base, int8 exponent) private pure returns (uint) {
require(exponent >= 0, "Exponent must be non-negative");
uint result = 1; uint result = 1;
for (int8 i = 0; i < exponent; i++) { for (int8 i = 0; i < exponent; i++) {
result *= base; result *= base;
@@ -45,61 +73,40 @@ contract EventManager {
return result; return result;
} }
function getEventPriceFlare( function getEventPriceFlare(uint256 _eventId) public view returns (uint256 _flr) {
uint256 _eventId require(_eventId < eventCounter, "Invalid event ID");
) public view returns (uint256 _flr) {
require(_eventId < eventCounter, 'Invalid event ID');
return centsToFlare(events[_eventId].ticketPrice); return centsToFlare(events[_eventId].ticketPrice);
} }
function createEvent( function createEvent(string memory _name, string memory _description, uint256 _capacity, uint256 _ticketPrice, uint256 _eventDate, string[] memory _images) public returns (uint256 _eventId) {
string memory _name, events[eventCounter] = Event(_name, _description, _capacity, 0, _ticketPrice, _eventDate, _images, new uint256[](0), payable(msg.sender));
string memory _description,
uint256 _capacity,
uint256 _ticketPrice,
uint256 _eventDate,
string[] memory _images
) public {
events[eventCounter] = Event(
_name,
_description,
_capacity,
0,
_ticketPrice,
_eventDate,
_images,
new uint256[](0),
msg.sender
);
eventCounter++; eventCounter++;
emit EventCreated(eventCounter - 1, _name, _eventDate);
return eventCounter - 1;
} }
function getEventImages( function getEventImages(uint256 _eventId) public view returns (string[] memory) {
uint256 _eventId require(_eventId < eventCounter, "Invalid event ID");
) public view returns (string[] memory) {
require(_eventId < eventCounter, 'Invalid event ID');
return events[_eventId].images; return events[_eventId].images;
} }
function getEventTickets( function getEventTickets(uint256 _eventId) public view returns (uint256[] memory) {
uint256 _eventId require(_eventId < eventCounter, "Invalid event ID");
) public view returns (uint256[] memory) {
require(_eventId < eventCounter, 'Invalid event ID');
return events[_eventId].tickets; return events[_eventId].tickets;
} }
//TODO: ADD CURRENCY CONVERSION + CHECK function buyTicket(uint256 _eventId) public payable returns (uint256 _ticketId) {
function buyTicket(uint256 _eventId) public payable { require(_eventId < eventCounter, "Invalid event ID");
require(_eventId < eventCounter, 'Invalid event ID'); require(events[_eventId].eventDate > block.timestamp, "Event has already passed");
require( require(events[_eventId].tickets.length < events[_eventId].capacity, "Event is full");
events[_eventId].eventDate > block.timestamp,
'Event has already passed' uint256 ticketCost = getEventPriceFlare(_eventId); // Get ticket price in FLR
); require(msg.value >= ticketCost, "Insufficient value provided"); // Ensure user has paid >= ticket price
require( if (msg.value > ticketCost) {
events[_eventId].tickets.length < events[_eventId].capacity, // Pay any excess the user paid
'Event is full' (bool sentExcess, ) = msg.sender.call{value: msg.value - ticketCost}("");
); require(sentExcess, "Failed to send FLR excess back to buyer");
require(msg.value == events[_eventId].ticketPrice, 'Invalid ticket price'); }
// Create new ticket // Create new ticket
tickets[ticketCounter] = Ticket(msg.sender, block.timestamp, _eventId); tickets[ticketCounter] = Ticket(msg.sender, block.timestamp, _eventId);
@@ -110,19 +117,20 @@ contract EventManager {
ticketCounter++; ticketCounter++;
// Update number of tickets sold // Update number of tickets sold
events[_eventId].tickets.push(ticketCounter - 1);
events[_eventId].ticketsSold++; events[_eventId].ticketsSold++;
// Transfer FLR to event host // Transfer FLR to event host
(bool sent, ) = events[_eventId].eventHost.call{value: msg.value}(''); (bool sentToHost, ) = events[_eventId].eventHost.call{value: ticketCost}("");
require(sent, 'Failed to send FLR to event host'); require(sentToHost, "Failed to send FLR to event host");
emit TicketPurchased(ticketCounter - 1, _eventId, msg.sender, ticketCost);
return ticketCounter - 1;
} }
function transferTicketForce(uint256 _ticketId, address _to) private { function transferTicketForce(uint256 _ticketId, address _to) private {
require(_ticketId < ticketCounter, 'Invalid ticket ID'); require(_ticketId < ticketCounter, "Invalid ticket ID");
require( require(events[tickets[_ticketId].eventId].eventDate > block.timestamp, "Event has already passed");
events[tickets[_ticketId].eventId].eventDate > block.timestamp,
'Event has already passed'
);
address prevHolder = tickets[_ticketId].holder; address prevHolder = tickets[_ticketId].holder;
@@ -139,37 +147,37 @@ contract EventManager {
require(found, "Ticket not found in sender's inventory"); require(found, "Ticket not found in sender's inventory");
// Remove ticket from holder's array // Remove ticket from holder's array
for (; i < userTickets[prevHolder].length; i++) { for (; i < userTickets[prevHolder].length-1; i++) {
userTickets[prevHolder][i] = userTickets[prevHolder][i + 1]; userTickets[prevHolder][i] = userTickets[prevHolder][i+1];
} }
userTickets[prevHolder].pop();
// Add ticket to _to's array // Add ticket to _to's array
userTickets[_to].push(_ticketId); userTickets[_to].push(_ticketId);
tickets[_ticketId].holder = _to; tickets[_ticketId].holder = _to;
emit TicketTransferred(_ticketId, prevHolder, _to);
} }
function approveTicket(uint256 _ticketId, address _to, bool _allowed) public { function approveTicket(uint256 _ticketId, address _to, bool _allowed) public {
require(_ticketId < ticketCounter, 'Invalid ticket ID'); require(_ticketId < ticketCounter, "Invalid ticket ID");
require( require(tickets[_ticketId].holder == msg.sender, "You do not own this ticket");
tickets[_ticketId].holder == msg.sender,
'You do not own this ticket'
);
ticketAllowance[_ticketId][_to] = _allowed; ticketAllowance[_ticketId][_to] = _allowed;
emit TicketTransferApproved(_ticketId, msg.sender, _to);
} }
function transferTicket(uint256 _ticketId, address _to) public { function transferTicketFrom(uint256 _ticketId, address _to) public {
require(_ticketId < ticketCounter, 'Invalid ticket ID'); require(ticketAllowance[_ticketId][msg.sender], "You are not allowed to transfer this ticket");
require(
tickets[_ticketId].holder == msg.sender ||
tickets[_ticketId].holder == msg.sender,
'You do not own this ticket'
);
require(
ticketAllowance[_ticketId][msg.sender],
'You are not allowed to transfer this ticket'
);
ticketAllowance[_ticketId][msg.sender] = false; ticketAllowance[_ticketId][msg.sender] = false;
transferTicketForce(_ticketId, _to); transferTicketForce(_ticketId, _to);
} }
function transferTicket(uint256 _ticketId, address _to) public {
require(_ticketId < ticketCounter, "Invalid ticket ID");
require(tickets[_ticketId].holder == msg.sender, "You do not own this ticket");
transferTicketForce(_ticketId, _to);
}
} }

View File

@@ -1,14 +1,13 @@
import { HardhatUserConfig } from "hardhat/config"; import { HardhatUserConfig } from 'hardhat/config';
import "@nomicfoundation/hardhat-toolbox"; import '@nomiclabs/hardhat-waffle';
import "@nomiclabs/hardhat-ethers"; import '@nomiclabs/hardhat-ethers';
const config: HardhatUserConfig = { const config: HardhatUserConfig = {
solidity: "0.8.19", solidity: '0.8.17',
paths: { networks: {
sources: "./contracts", hardhat: {
tests: "./test", chainId: 1337,
cache: "./cache", },
artifacts: "./artifacts"
}, },
}; };

View File

@@ -1,25 +1,25 @@
import { expect } from "chai"; import { expect } from 'chai';
import { ethers } from "hardhat"; import { ethers } from 'hardhat';
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import { EventManager } from "../typechain-types/EventManager"; import { EventManager } from '../typechain-types/EventManager';
describe("EventManager", function () { describe('EventManager', function () {
let eventManager: EventManager; let eventManager: EventManager;
let owner: SignerWithAddress; let owner: SignerWithAddress;
let addr1: SignerWithAddress; let addr1: SignerWithAddress;
let addr2: SignerWithAddress; let addr2: SignerWithAddress;
const EVENT_NAME = "Test Event"; const EVENT_NAME = 'Test Event';
const EVENT_DESCRIPTION = "This is a test event"; const EVENT_DESCRIPTION = 'This is a test event';
const EVENT_CAPACITY = 100; const EVENT_CAPACITY = 100;
const EVENT_TICKET_PRICE = 1000; // 10 USD in cents const EVENT_TICKET_PRICE = 1000; // 10 USD in cents
const EVENT_DATE = Math.floor(Date.now() / 1000) + 86400; // 1 day from now const EVENT_DATE = Math.floor(Date.now() / 1000) + 86400; // 1 day from now
const EVENT_IMAGES = ["image1.jpg", "image2.jpg"]; const EVENT_IMAGES = ['image1.jpg', 'image2.jpg'];
beforeEach(async function () { beforeEach(async function () {
[owner, addr1, addr2] = await ethers.getSigners(); [owner, addr1, addr2] = await ethers.getSigners();
const EventManager = await ethers.getContractFactory("EventManager"); const EventManager = await ethers.getContractFactory('EventManager');
eventManager = await EventManager.deploy(); eventManager = await EventManager.deploy();
await eventManager.deployed(); await eventManager.deployed();
}); });
@@ -35,35 +35,37 @@ describe("EventManager", function () {
); );
} }
describe("Event Creation", function () { // describe("Event Creation", function () {
it("Should create an event with correct details", async function () { // it("Should create an event with correct details", async function () {
await createTestEvent(); // await createTestEvent();
const event = await eventManager.events(0); // const event = await eventManager.events(0);
expect(event.name).to.equal(EVENT_NAME); // expect(event.name).to.equal(EVENT_NAME);
expect(event.description).to.equal(EVENT_DESCRIPTION); // expect(event.description).to.equal(EVENT_DESCRIPTION);
expect(event.capacity).to.equal(EVENT_CAPACITY); // expect(event.capacity).to.equal(EVENT_CAPACITY);
expect(event.ticketPrice).to.equal(EVENT_TICKET_PRICE); // expect(event.ticketPrice).to.equal(EVENT_TICKET_PRICE);
expect(event.eventDate).to.equal(EVENT_DATE); // expect(event.eventDate).to.equal(EVENT_DATE);
expect(event.eventHost).to.equal(owner.address); // expect(event.eventHost).to.equal(owner.address);
}); // });
it("Should emit EventCreated event", async function () { // it("Should emit EventCreated event", async function () {
await expect(await createTestEvent()) // await expect(await createTestEvent())
.to.emit(eventManager, "EventCreated") // .to.emit(eventManager, "EventCreated")
.withArgs(0, EVENT_NAME, EVENT_DATE); // .withArgs(0, EVENT_NAME, EVENT_DATE);
}); // });
}); // });
describe("Ticket Purchase", function () { describe('Ticket Purchase', function () {
beforeEach(async function () { beforeEach(async function () {
await createTestEvent(); await createTestEvent();
}); });
it("Should allow buying a ticket", async function () { it('Should allow buying a ticket', async function () {
const ticketPriceFlare = await eventManager.getEventPriceFlare(0); const ticketPriceFlare = await eventManager.getEventPriceFlare(0);
await expect(eventManager.connect(addr1).buyTicket(0, { value: ticketPriceFlare })) await expect(
.to.emit(eventManager, "TicketPurchased") eventManager.connect(addr1).buyTicket(0, { value: ticketPriceFlare })
)
.to.emit(eventManager, 'TicketPurchased')
.withArgs(0, 0, addr1.address, ticketPriceFlare); .withArgs(0, 0, addr1.address, ticketPriceFlare);
const ticket = await eventManager.tickets(0); const ticket = await eventManager.tickets(0);
@@ -71,61 +73,71 @@ describe("EventManager", function () {
expect(ticket.eventId).to.equal(0); expect(ticket.eventId).to.equal(0);
}); });
it("Should fail if insufficient funds are provided", async function () { it('Should fail if insufficient funds are provided', async function () {
const ticketPriceFlare = await eventManager.getEventPriceFlare(0); const ticketPriceFlare = await eventManager.getEventPriceFlare(0);
await expect( await expect(
eventManager.connect(addr1).buyTicket(0, { value: ticketPriceFlare.sub(1) }) eventManager
).to.be.revertedWith("Insufficient value provided"); .connect(addr1)
.buyTicket(0, { value: ticketPriceFlare.sub(1) })
).to.be.revertedWith('Insufficient value provided');
}); });
}); });
describe("Ticket Transfer", function () { describe('Ticket Transfer', function () {
beforeEach(async function () { beforeEach(async function () {
await createTestEvent(); await createTestEvent();
const ticketPriceFlare = await eventManager.getEventPriceFlare(0); const ticketPriceFlare = await eventManager.getEventPriceFlare(0);
await eventManager.connect(addr1).buyTicket(0, { value: ticketPriceFlare }); await eventManager
.connect(addr1)
.buyTicket(0, { value: ticketPriceFlare });
}); });
it("Should allow transferring a ticket", async function () { it('Should allow transferring a ticket', async function () {
await expect(eventManager.connect(addr1).transferTicket(0, addr2.address)) await expect(eventManager.connect(addr1).transferTicket(0, addr2.address))
.to.emit(eventManager, "TicketTransferred") .to.emit(eventManager, 'TicketTransferred')
.withArgs(0, addr1.address, addr2.address); .withArgs(0, addr1.address, addr2.address);
const ticket = await eventManager.tickets(0); const ticket = await eventManager.tickets(0);
expect(ticket.holder).to.equal(addr2.address); expect(ticket.holder).to.equal(addr2.address);
}); });
it("Should fail if non-owner tries to transfer", async function () { it('Should fail if non-owner tries to transfer', async function () {
await expect( await expect(
eventManager.connect(addr2).transferTicket(0, addr2.address) eventManager.connect(addr2).transferTicket(0, addr2.address)
).to.be.revertedWith("You do not own this ticket"); ).to.be.revertedWith('You do not own this ticket');
}); });
}); });
describe("Ticket Approval and Transfer", function () { describe('Ticket Approval and Transfer', function () {
beforeEach(async function () { beforeEach(async function () {
await createTestEvent(); await createTestEvent();
const ticketPriceFlare = await eventManager.getEventPriceFlare(0); const ticketPriceFlare = await eventManager.getEventPriceFlare(0);
await eventManager.connect(addr1).buyTicket(0, { value: ticketPriceFlare }); await eventManager
.connect(addr1)
.buyTicket(0, { value: ticketPriceFlare });
}); });
it("Should allow approving and transferring a ticket", async function () { it('Should allow approving and transferring a ticket', async function () {
await expect(eventManager.connect(addr1).approveTicket(0, addr2.address, true)) await expect(
.to.emit(eventManager, "TicketTransferApproved") eventManager.connect(addr1).approveTicket(0, addr2.address, true)
)
.to.emit(eventManager, 'TicketTransferApproved')
.withArgs(0, addr1.address, addr2.address); .withArgs(0, addr1.address, addr2.address);
await expect(eventManager.connect(addr2).transferTicketFrom(0, addr2.address)) await expect(
.to.emit(eventManager, "TicketTransferred") eventManager.connect(addr2).transferTicketFrom(0, addr2.address)
)
.to.emit(eventManager, 'TicketTransferred')
.withArgs(0, addr1.address, addr2.address); .withArgs(0, addr1.address, addr2.address);
const ticket = await eventManager.tickets(0); const ticket = await eventManager.tickets(0);
expect(ticket.holder).to.equal(addr2.address); expect(ticket.holder).to.equal(addr2.address);
}); });
it("Should fail if transferring without approval", async function () { it('Should fail if transferring without approval', async function () {
await expect( await expect(
eventManager.connect(addr2).transferTicketFrom(0, addr2.address) eventManager.connect(addr2).transferTicketFrom(0, addr2.address)
).to.be.revertedWith("You are not allowed to transfer this ticket"); ).to.be.revertedWith('You are not allowed to transfer this ticket');
}); });
}); });
}); });

View File

@@ -1,5 +1,5 @@
/* Autogenerated file. Do not edit manually. */ /* Autogenerated file. Do not edit manually. */
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
import type * as interface from "./interface"; import type * as contractInterface from './interface';
export type { interface }; export type { contractInterface };

View File

@@ -1,5 +1,5 @@
/* Autogenerated file. Do not edit manually. */ /* Autogenerated file. Do not edit manually. */
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
import type * as interface from "./interface"; import type * as interfaces from './interface';
export type { interface }; export type { interfaces };

View File

@@ -1,5 +1,5 @@
/* Autogenerated file. Do not edit manually. */ /* Autogenerated file. Do not edit manually. */
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
import type * as interface from "./interface"; import type * as interfaces from './interface';
export type { interface }; export type { interfaces };

View File

@@ -13,169 +13,237 @@ import type {
PopulatedTransaction, PopulatedTransaction,
Signer, Signer,
utils, utils,
} from "ethers"; } from 'ethers';
import type { FunctionFragment, Result } from "@ethersproject/abi"; import type {
import type { Listener, Provider } from "@ethersproject/providers"; FunctionFragment,
Result,
EventFragment,
} from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { import type {
TypedEventFilter, TypedEventFilter,
TypedEvent, TypedEvent,
TypedListener, TypedListener,
OnEvent, OnEvent,
PromiseOrValue, PromiseOrValue,
} from "../common"; } from '../common';
export interface EventManagerInterface extends utils.Interface { export interface EventManagerInterface extends utils.Interface {
functions: { functions: {
"approveTicket(uint256,address,bool)": FunctionFragment; 'approveTicket(uint256,address,bool)': FunctionFragment;
"buyTicket(uint256)": FunctionFragment; 'buyTicket(uint256)': FunctionFragment;
"centsToFlare(uint256)": FunctionFragment; 'centsToFlare(uint256)': FunctionFragment;
"createEvent(string,string,uint256,uint256,uint256,string[])": FunctionFragment; 'createEvent(string,string,uint256,uint256,uint256,string[])': FunctionFragment;
"eventCounter()": FunctionFragment; 'eventCounter()': FunctionFragment;
"events(uint256)": FunctionFragment; 'events(uint256)': FunctionFragment;
"getEventImages(uint256)": FunctionFragment; 'getEventImages(uint256)': FunctionFragment;
"getEventPriceFlare(uint256)": FunctionFragment; 'getEventPriceFlare(uint256)': FunctionFragment;
"getEventTickets(uint256)": FunctionFragment; 'getEventTickets(uint256)': FunctionFragment;
"power(uint256,int8)": FunctionFragment; 'ticketCounter()': FunctionFragment;
"ticketCounter()": FunctionFragment; 'tickets(uint256)': FunctionFragment;
"tickets(uint256)": FunctionFragment; 'transferTicket(uint256,address)': FunctionFragment;
"transferTicket(uint256,address)": FunctionFragment; 'transferTicketFrom(uint256,address)': FunctionFragment;
"userTickets(address,uint256)": FunctionFragment; 'userTickets(address,uint256)': FunctionFragment;
}; };
getFunction( getFunction(
nameOrSignatureOrTopic: nameOrSignatureOrTopic:
| "approveTicket" | 'approveTicket'
| "buyTicket" | 'buyTicket'
| "centsToFlare" | 'centsToFlare'
| "createEvent" | 'createEvent'
| "eventCounter" | 'eventCounter'
| "events" | 'events'
| "getEventImages" | 'getEventImages'
| "getEventPriceFlare" | 'getEventPriceFlare'
| "getEventTickets" | 'getEventTickets'
| "power" | 'ticketCounter'
| "ticketCounter" | 'tickets'
| "tickets" | 'transferTicket'
| "transferTicket" | 'transferTicketFrom'
| "userTickets" | 'userTickets'
): FunctionFragment; ): FunctionFragment;
encodeFunctionData( encodeFunctionData(
functionFragment: "approveTicket", functionFragment: 'approveTicket',
values: [ values: [
PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>,
PromiseOrValue<string>, PromiseOrValue<string>,
PromiseOrValue<boolean> PromiseOrValue<boolean>,
] ]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "buyTicket", functionFragment: 'buyTicket',
values: [PromiseOrValue<BigNumberish>] values: [PromiseOrValue<BigNumberish>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "centsToFlare", functionFragment: 'centsToFlare',
values: [PromiseOrValue<BigNumberish>] values: [PromiseOrValue<BigNumberish>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "createEvent", functionFragment: 'createEvent',
values: [ values: [
PromiseOrValue<string>, PromiseOrValue<string>,
PromiseOrValue<string>, PromiseOrValue<string>,
PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>,
PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>,
PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>,
PromiseOrValue<string>[] PromiseOrValue<string>[],
] ]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "eventCounter", functionFragment: 'eventCounter',
values?: undefined values?: undefined
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "events", functionFragment: 'events',
values: [PromiseOrValue<BigNumberish>] values: [PromiseOrValue<BigNumberish>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "getEventImages", functionFragment: 'getEventImages',
values: [PromiseOrValue<BigNumberish>] values: [PromiseOrValue<BigNumberish>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "getEventPriceFlare", functionFragment: 'getEventPriceFlare',
values: [PromiseOrValue<BigNumberish>] values: [PromiseOrValue<BigNumberish>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "getEventTickets", functionFragment: 'getEventTickets',
values: [PromiseOrValue<BigNumberish>] values: [PromiseOrValue<BigNumberish>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "power", functionFragment: 'ticketCounter',
values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]
): string;
encodeFunctionData(
functionFragment: "ticketCounter",
values?: undefined values?: undefined
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "tickets", functionFragment: 'tickets',
values: [PromiseOrValue<BigNumberish>] values: [PromiseOrValue<BigNumberish>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "transferTicket", functionFragment: 'transferTicket',
values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>] values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]
): string; ): string;
encodeFunctionData( encodeFunctionData(
functionFragment: "userTickets", functionFragment: 'transferTicketFrom',
values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]
): string;
encodeFunctionData(
functionFragment: 'userTickets',
values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>] values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]
): string; ): string;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "approveTicket", functionFragment: 'approveTicket',
data: BytesLike data: BytesLike
): Result; ): Result;
decodeFunctionResult(functionFragment: "buyTicket", data: BytesLike): Result; decodeFunctionResult(functionFragment: 'buyTicket', data: BytesLike): Result;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "centsToFlare", functionFragment: 'centsToFlare',
data: BytesLike data: BytesLike
): Result; ): Result;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "createEvent", functionFragment: 'createEvent',
data: BytesLike data: BytesLike
): Result; ): Result;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "eventCounter", functionFragment: 'eventCounter',
data: BytesLike data: BytesLike
): Result; ): Result;
decodeFunctionResult(functionFragment: "events", data: BytesLike): Result; decodeFunctionResult(functionFragment: 'events', data: BytesLike): Result;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "getEventImages", functionFragment: 'getEventImages',
data: BytesLike data: BytesLike
): Result; ): Result;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "getEventPriceFlare", functionFragment: 'getEventPriceFlare',
data: BytesLike data: BytesLike
): Result; ): Result;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "getEventTickets", functionFragment: 'getEventTickets',
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "power", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "ticketCounter",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "tickets", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "transferTicket",
data: BytesLike data: BytesLike
): Result; ): Result;
decodeFunctionResult( decodeFunctionResult(
functionFragment: "userTickets", functionFragment: 'ticketCounter',
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: 'tickets', data: BytesLike): Result;
decodeFunctionResult(
functionFragment: 'transferTicket',
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: 'transferTicketFrom',
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: 'userTickets',
data: BytesLike data: BytesLike
): Result; ): Result;
events: {}; events: {
'EventCreated(uint256,string,uint256)': EventFragment;
'TicketPurchased(uint256,uint256,address,uint256)': EventFragment;
'TicketTransferApproved(uint256,address,address)': EventFragment;
'TicketTransferred(uint256,address,address)': EventFragment;
};
getEvent(nameOrSignatureOrTopic: 'EventCreated'): EventFragment;
getEvent(nameOrSignatureOrTopic: 'TicketPurchased'): EventFragment;
getEvent(nameOrSignatureOrTopic: 'TicketTransferApproved'): EventFragment;
getEvent(nameOrSignatureOrTopic: 'TicketTransferred'): EventFragment;
} }
export interface EventCreatedEventObject {
eventId: BigNumber;
name: string;
eventDate: BigNumber;
}
export type EventCreatedEvent = TypedEvent<
[BigNumber, string, BigNumber],
EventCreatedEventObject
>;
export type EventCreatedEventFilter = TypedEventFilter<EventCreatedEvent>;
export interface TicketPurchasedEventObject {
ticketId: BigNumber;
eventId: BigNumber;
buyer: string;
price: BigNumber;
}
export type TicketPurchasedEvent = TypedEvent<
[BigNumber, BigNumber, string, BigNumber],
TicketPurchasedEventObject
>;
export type TicketPurchasedEventFilter = TypedEventFilter<TicketPurchasedEvent>;
export interface TicketTransferApprovedEventObject {
ticketId: BigNumber;
owner: string;
trustee: string;
}
export type TicketTransferApprovedEvent = TypedEvent<
[BigNumber, string, string],
TicketTransferApprovedEventObject
>;
export type TicketTransferApprovedEventFilter =
TypedEventFilter<TicketTransferApprovedEvent>;
export interface TicketTransferredEventObject {
ticketId: BigNumber;
from: string;
to: string;
}
export type TicketTransferredEvent = TypedEvent<
[BigNumber, string, string],
TicketTransferredEventObject
>;
export type TicketTransferredEventFilter =
TypedEventFilter<TicketTransferredEvent>;
export interface EventManager extends BaseContract { export interface EventManager extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this; connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this; attach(addressOrName: string): this;
@@ -262,12 +330,6 @@ export interface EventManager extends BaseContract {
overrides?: CallOverrides overrides?: CallOverrides
): Promise<[BigNumber[]]>; ): Promise<[BigNumber[]]>;
power(
base: PromiseOrValue<BigNumberish>,
exponent: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<[BigNumber]>;
ticketCounter(overrides?: CallOverrides): Promise<[BigNumber]>; ticketCounter(overrides?: CallOverrides): Promise<[BigNumber]>;
tickets( tickets(
@@ -287,6 +349,12 @@ export interface EventManager extends BaseContract {
overrides?: Overrides & { from?: PromiseOrValue<string> } overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>; ): Promise<ContractTransaction>;
transferTicketFrom(
_ticketId: PromiseOrValue<BigNumberish>,
_to: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
userTickets( userTickets(
arg0: PromiseOrValue<string>, arg0: PromiseOrValue<string>,
arg1: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>,
@@ -353,12 +421,6 @@ export interface EventManager extends BaseContract {
overrides?: CallOverrides overrides?: CallOverrides
): Promise<BigNumber[]>; ): Promise<BigNumber[]>;
power(
base: PromiseOrValue<BigNumberish>,
exponent: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<BigNumber>;
ticketCounter(overrides?: CallOverrides): Promise<BigNumber>; ticketCounter(overrides?: CallOverrides): Promise<BigNumber>;
tickets( tickets(
@@ -378,6 +440,12 @@ export interface EventManager extends BaseContract {
overrides?: Overrides & { from?: PromiseOrValue<string> } overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>; ): Promise<ContractTransaction>;
transferTicketFrom(
_ticketId: PromiseOrValue<BigNumberish>,
_to: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
userTickets( userTickets(
arg0: PromiseOrValue<string>, arg0: PromiseOrValue<string>,
arg1: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>,
@@ -395,7 +463,7 @@ export interface EventManager extends BaseContract {
buyTicket( buyTicket(
_eventId: PromiseOrValue<BigNumberish>, _eventId: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides overrides?: CallOverrides
): Promise<void>; ): Promise<BigNumber>;
centsToFlare( centsToFlare(
_cents: PromiseOrValue<BigNumberish>, _cents: PromiseOrValue<BigNumberish>,
@@ -410,7 +478,7 @@ export interface EventManager extends BaseContract {
_eventDate: PromiseOrValue<BigNumberish>, _eventDate: PromiseOrValue<BigNumberish>,
_images: PromiseOrValue<string>[], _images: PromiseOrValue<string>[],
overrides?: CallOverrides overrides?: CallOverrides
): Promise<void>; ): Promise<BigNumber>;
eventCounter(overrides?: CallOverrides): Promise<BigNumber>; eventCounter(overrides?: CallOverrides): Promise<BigNumber>;
@@ -444,12 +512,6 @@ export interface EventManager extends BaseContract {
overrides?: CallOverrides overrides?: CallOverrides
): Promise<BigNumber[]>; ): Promise<BigNumber[]>;
power(
base: PromiseOrValue<BigNumberish>,
exponent: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<BigNumber>;
ticketCounter(overrides?: CallOverrides): Promise<BigNumber>; ticketCounter(overrides?: CallOverrides): Promise<BigNumber>;
tickets( tickets(
@@ -469,6 +531,12 @@ export interface EventManager extends BaseContract {
overrides?: CallOverrides overrides?: CallOverrides
): Promise<void>; ): Promise<void>;
transferTicketFrom(
_ticketId: PromiseOrValue<BigNumberish>,
_to: PromiseOrValue<string>,
overrides?: CallOverrides
): Promise<void>;
userTickets( userTickets(
arg0: PromiseOrValue<string>, arg0: PromiseOrValue<string>,
arg1: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>,
@@ -476,7 +544,53 @@ export interface EventManager extends BaseContract {
): Promise<BigNumber>; ): Promise<BigNumber>;
}; };
filters: {}; filters: {
'EventCreated(uint256,string,uint256)'(
eventId?: null,
name?: null,
eventDate?: null
): EventCreatedEventFilter;
EventCreated(
eventId?: null,
name?: null,
eventDate?: null
): EventCreatedEventFilter;
'TicketPurchased(uint256,uint256,address,uint256)'(
ticketId?: null,
eventId?: null,
buyer?: null,
price?: null
): TicketPurchasedEventFilter;
TicketPurchased(
ticketId?: null,
eventId?: null,
buyer?: null,
price?: null
): TicketPurchasedEventFilter;
'TicketTransferApproved(uint256,address,address)'(
ticketId?: null,
owner?: null,
trustee?: null
): TicketTransferApprovedEventFilter;
TicketTransferApproved(
ticketId?: null,
owner?: null,
trustee?: null
): TicketTransferApprovedEventFilter;
'TicketTransferred(uint256,address,address)'(
ticketId?: null,
from?: null,
to?: null
): TicketTransferredEventFilter;
TicketTransferred(
ticketId?: null,
from?: null,
to?: null
): TicketTransferredEventFilter;
};
estimateGas: { estimateGas: {
approveTicket( approveTicket(
@@ -528,12 +642,6 @@ export interface EventManager extends BaseContract {
overrides?: CallOverrides overrides?: CallOverrides
): Promise<BigNumber>; ): Promise<BigNumber>;
power(
base: PromiseOrValue<BigNumberish>,
exponent: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<BigNumber>;
ticketCounter(overrides?: CallOverrides): Promise<BigNumber>; ticketCounter(overrides?: CallOverrides): Promise<BigNumber>;
tickets( tickets(
@@ -547,6 +655,12 @@ export interface EventManager extends BaseContract {
overrides?: Overrides & { from?: PromiseOrValue<string> } overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>; ): Promise<BigNumber>;
transferTicketFrom(
_ticketId: PromiseOrValue<BigNumberish>,
_to: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
userTickets( userTickets(
arg0: PromiseOrValue<string>, arg0: PromiseOrValue<string>,
arg1: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>,
@@ -604,12 +718,6 @@ export interface EventManager extends BaseContract {
overrides?: CallOverrides overrides?: CallOverrides
): Promise<PopulatedTransaction>; ): Promise<PopulatedTransaction>;
power(
base: PromiseOrValue<BigNumberish>,
exponent: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
ticketCounter(overrides?: CallOverrides): Promise<PopulatedTransaction>; ticketCounter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
tickets( tickets(
@@ -623,6 +731,12 @@ export interface EventManager extends BaseContract {
overrides?: Overrides & { from?: PromiseOrValue<string> } overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>; ): Promise<PopulatedTransaction>;
transferTicketFrom(
_ticketId: PromiseOrValue<BigNumberish>,
_to: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
userTickets( userTickets(
arg0: PromiseOrValue<string>, arg0: PromiseOrValue<string>,
arg1: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>,

View File

@@ -1,4 +1,4 @@
/* Autogenerated file. Do not edit manually. */ /* Autogenerated file. Do not edit manually. */
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
export * as interface from "./interface"; export * as interfaces from './interface';

View File

@@ -1,4 +1,4 @@
/* Autogenerated file. Do not edit manually. */ /* Autogenerated file. Do not edit manually. */
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
export * as interface from "./interface"; export * as interfaces from './interface';

View File

@@ -1,4 +1,4 @@
/* Autogenerated file. Do not edit manually. */ /* Autogenerated file. Do not edit manually. */
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
export * as interface from "./interface"; export * as interfaces from './interface';

File diff suppressed because one or more lines are too long