UNPKG

@mysten/suins

Version:
162 lines (160 loc) 4.32 kB
import { MoveEnum, MoveStruct, normalizeMoveArguments } from "../utils/index.mjs"; import { Domain } from "./domain.mjs"; import { VecMap } from "./deps/sui/vec_map.mjs"; import { TypeName } from "./deps/std/type_name.mjs"; import { bcs } from "@mysten/sui/bcs"; //#region src/contracts/suins/payment.ts /************************************************************** * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED * **************************************************************/ const $moduleName = "@suins/core::payment"; const RequestData = new MoveStruct({ name: `${$moduleName}::RequestData`, fields: { version: bcs.u8(), domain: Domain, years: bcs.u8(), base_amount: bcs.u64(), discounts_applied: VecMap(bcs.string(), bcs.u64()), metadata: VecMap(bcs.string(), bcs.string()) } }); const TransactionEvent = new MoveStruct({ name: `${$moduleName}::TransactionEvent`, fields: { app: TypeName, domain: Domain, years: bcs.u8(), request_data_version: bcs.u8(), base_amount: bcs.u64(), discounts_applied: VecMap(bcs.string(), bcs.u64()), metadata: VecMap(bcs.string(), bcs.string()), is_renewal: bcs.bool(), currency: TypeName, currency_amount: bcs.u64() } }); /** * The payment intent for a given domain * * - Registration: The user is registering a new domain. * - Renewal: The user is renewing an existing domain. */ const PaymentIntent = new MoveEnum({ name: `${$moduleName}::PaymentIntent`, fields: { Registration: RequestData, Renewal: RequestData } }); /** * A receipt that is generated after a successful payment. Can be used to: * * - Prove that the payment was successful. * - Register a new name, or renew an existing one. */ const Receipt = new MoveEnum({ name: `${$moduleName}::Receipt`, fields: { Registration: new MoveStruct({ name: `Receipt.Registration`, fields: { domain: Domain, years: bcs.u8(), version: bcs.u8() } }), Renewal: new MoveStruct({ name: `Receipt.Renewal`, fields: { domain: Domain, years: bcs.u8(), version: bcs.u8() } }) } }); /** * Creates a `PaymentIntent` for registering a new domain. This is a hot-potato and * can only be consumed in a single transaction. */ function initRegistration(options) { const packageAddress = options.package ?? "@suins/core"; const argumentsTypes = [null, "0x1::string::String"]; const parameterNames = ["suins", "domain"]; return (tx) => tx.moveCall({ package: packageAddress, module: "payment", function: "init_registration", arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames) }); } /** * Creates a `PaymentIntent` for renewing an existing domain. This is a hot-potato * and can only be consumed in a single transaction. */ function initRenewal(options) { const packageAddress = options.package ?? "@suins/core"; const argumentsTypes = [ null, null, "u8" ]; const parameterNames = [ "suins", "nft", "years" ]; return (tx) => tx.moveCall({ package: packageAddress, module: "payment", function: "init_renewal", arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames) }); } /** * Register a domain with the given receipt. This is a hot-potato and can only be * consumed in a single transaction. */ function register(options) { const packageAddress = options.package ?? "@suins/core"; const argumentsTypes = [ null, null, "0x2::clock::Clock" ]; const parameterNames = ["receipt", "suins"]; return (tx) => tx.moveCall({ package: packageAddress, module: "payment", function: "register", arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames) }); } /** * Renew a domain with the given receipt. This is a hot-potato and can only be * consumed in a single transaction. */ function renew(options) { const packageAddress = options.package ?? "@suins/core"; const argumentsTypes = [ null, null, null, "0x2::clock::Clock" ]; const parameterNames = [ "receipt", "suins", "nft" ]; return (tx) => tx.moveCall({ package: packageAddress, module: "payment", function: "renew", arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames) }); } //#endregion export { initRegistration, initRenewal, register, renew }; //# sourceMappingURL=payment.mjs.map