opnet
Version:
The perfect library for building Bitcoin-based applications.
72 lines (71 loc) • 2.7 kB
TypeScript
import { Address } from '../../../../../node_modules/@btc-vision/transaction/build/index.js';
import { CallResult } from '../../../../contracts/CallResult.js';
import { OPNetEvent } from '../../../../contracts/OPNetEvent.js';
import { IOP20Contract } from '../opnet/IOP20Contract.js';
export type MintedEvent = {
readonly to: Address;
readonly amount: bigint;
};
export type FreeMintConfiguredEvent = {
readonly token: Address;
readonly supply: bigint;
readonly perTxLimit: bigint;
};
export type FreeMintClaimedEvent = {
readonly user: Address;
readonly token: Address;
readonly amount: bigint;
};
export type TokenOwnerTransferredEvent = {
readonly previousOwner: Address;
readonly newOwner: Address;
};
export type TemplateOP20Initialize = CallResult<{}, OPNetEvent<MintedEvent | FreeMintConfiguredEvent>[]>;
export type TemplateOP20Mint = CallResult<{}, [OPNetEvent<MintedEvent>]>;
export type GrantMinterRole = CallResult<{
success: boolean;
}, []>;
export type RevokeMinterRole = CallResult<{
success: boolean;
}, []>;
export type IsMinter = CallResult<{
isMinter: boolean;
}, []>;
export type TokenOwner = CallResult<{
owner: Address;
}, []>;
export type FactoryAddress = CallResult<{
factory: Address;
}, []>;
export type TemplateOP20Deployer = CallResult<{
deployer: Address;
}, []>;
export type TransferTokenOwner = CallResult<{
success: boolean;
}, [
OPNetEvent<TokenOwnerTransferredEvent>
]>;
export type FreeMint = CallResult<{
success: boolean;
}, [OPNetEvent<MintedEvent>]>;
export type FreeMintInfo = CallResult<{
info: Uint8Array;
}, []>;
export type OnOP20Received = CallResult<{
selector: Uint8Array;
}, []>;
export interface ITemplateOP20 extends IOP20Contract {
initialize(maxSupply: bigint, decimals: number, name: string, symbol: string, initialMintTo: Address, initialMintAmount: bigint, freeMintSupply: bigint, freeMintPerTx: bigint, tokenOwner: Address): Promise<TemplateOP20Initialize>;
mint(to: Address, amount: bigint): Promise<TemplateOP20Mint>;
grantMinterRole(minter: Address): Promise<GrantMinterRole>;
revokeMinterRole(minter: Address): Promise<RevokeMinterRole>;
isMinter(account: Address): Promise<IsMinter>;
getTokenOwner(): Promise<TokenOwner>;
getFactoryAddress(): Promise<FactoryAddress>;
deployer(): Promise<TemplateOP20Deployer>;
transferTokenOwner(newOwner: Address): Promise<TransferTokenOwner>;
freeMint(amount: bigint): Promise<FreeMint>;
getFreeMintInfo(): Promise<FreeMintInfo>;
onOP20Received(operator: Address, from: Address, amount: bigint, data: Uint8Array): Promise<OnOP20Received>;
}
export default ITemplateOP20;