@silvana-one/token
Version:
Silvana Fungible Token Library
125 lines (124 loc) • 5.83 kB
TypeScript
import { AccountUpdate, Bool, DeployArgs, PublicKey, State, TokenContract, UInt64, VerificationKey, AccountUpdateForest, Field } from "o1js";
import { Whitelist } from "@silvana-one/storage";
import { FungibleTokenAdminBase } from "./FungibleTokenContract.js";
declare const AdvancedAdminData_base: (new (value: {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}) => {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}) & {
_isStruct: true;
} & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}, {
totalSupply: bigint;
requireAdminSignatureForMint: boolean;
anyoneCanMint: boolean;
}>, "fromFields"> & {
fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
};
} & {
fromValue: (value: {
totalSupply: number | bigint | UInt64;
requireAdminSignatureForMint: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: boolean | import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}) => {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
};
toInput: (x: {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
}) => {
totalSupply: string;
requireAdminSignatureForMint: boolean;
anyoneCanMint: boolean;
};
fromJSON: (x: {
totalSupply: string;
requireAdminSignatureForMint: boolean;
anyoneCanMint: boolean;
}) => {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
};
empty: () => {
totalSupply: UInt64;
requireAdminSignatureForMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
anyoneCanMint: import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool;
};
};
export declare class AdvancedAdminData extends AdvancedAdminData_base {
static new(params?: {
totalSupply?: number;
requireAdminSignatureForMint?: boolean;
anyoneCanMint?: boolean;
}): AdvancedAdminData;
pack(): Field;
static unpack(packed: Field): AdvancedAdminData;
}
export interface FungibleTokenWhitelistedAdminDeployProps extends Exclude<DeployArgs, undefined> {
adminPublicKey: PublicKey;
tokenContract: PublicKey;
totalSupply: UInt64;
whitelist: Whitelist;
requireAdminSignatureForMint: Bool;
anyoneCanMint: Bool;
}
/** A contract that grants permissions for administrative actions on a token.
*
* We separate this out into a dedicated contract. That way, when issuing a token, a user can
* specify their own rules for administrative actions, without changing the token contract itself.
*
* The advantage is that third party applications that only use the token in a non-privileged way
* can integrate against the unchanged token contract.
*/
export declare class FungibleTokenAdvancedAdmin extends TokenContract implements FungibleTokenAdminBase {
adminPublicKey: State<PublicKey>;
tokenContract: State<PublicKey>;
whitelist: State<Whitelist>;
adminData: State<import("node_modules/o1js/dist/node/lib/provable/field.js").Field>;
/**
* Overrides the approveBase method to prevent transfers of tokens.
*
* @param forest - The account update forest.
*/
approveBase(forest: AccountUpdateForest): Promise<void>;
deploy(props: FungibleTokenWhitelistedAdminDeployProps): Promise<void>;
events: {
updateWhitelist: typeof Whitelist;
};
/** Update the verification key.
* Note that because we have set the permissions for setting
* the verification key to `impossibleDuringCurrentVersion()`,
* this will only be possible in case of a protocol update that requires an update.
*/
updateVerificationKey(vk: VerificationKey): Promise<void>;
private ensureAdminSignature;
canMint(_accountUpdate: AccountUpdate): Promise<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
canChangeAdmin(_admin: PublicKey): Promise<import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool>;
canPause(): Promise<Bool>;
canResume(): Promise<Bool>;
updateWhitelist(whitelist: Whitelist): Promise<void>;
canChangeVerificationKey(_vk: VerificationKey): Promise<Bool>;
}
export {};