@mysten/suins
Version:
162 lines (160 loc) • 4.32 kB
JavaScript
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