@mysten/sui
Version:
Sui TypeScript API
93 lines (88 loc) • 1.89 kB
text/typescript
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
import { toBase64 } from '@mysten/bcs';
import type { SerializedBcs } from '@mysten/bcs';
import { normalizeSuiAddress } from '../utils/sui-types.js';
import type {
CallArg,
ObjectRef,
Reservation,
WithdrawalTypeArg,
WithdrawFrom,
} from './data/internal.js';
function Pure(data: Uint8Array | SerializedBcs<any>): Extract<CallArg, { Pure: unknown }> {
return {
$kind: 'Pure',
Pure: {
bytes: data instanceof Uint8Array ? toBase64(data) : data.toBase64(),
},
};
}
export const Inputs = {
Pure,
ObjectRef({ objectId, digest, version }: ObjectRef): Extract<CallArg, { Object: unknown }> {
return {
$kind: 'Object',
Object: {
$kind: 'ImmOrOwnedObject',
ImmOrOwnedObject: {
digest,
version,
objectId: normalizeSuiAddress(objectId),
},
},
};
},
SharedObjectRef({
objectId,
mutable,
initialSharedVersion,
}: {
objectId: string;
mutable: boolean;
initialSharedVersion: number | string;
}): Extract<CallArg, { Object: unknown }> {
return {
$kind: 'Object',
Object: {
$kind: 'SharedObject',
SharedObject: {
mutable,
initialSharedVersion,
objectId: normalizeSuiAddress(objectId),
},
},
};
},
ReceivingRef({ objectId, digest, version }: ObjectRef): Extract<CallArg, { Object: unknown }> {
return {
$kind: 'Object',
Object: {
$kind: 'Receiving',
Receiving: {
digest,
version,
objectId: normalizeSuiAddress(objectId),
},
},
};
},
FundsWithdrawal({
reservation,
typeArg,
withdrawFrom,
}: {
reservation: Reservation;
typeArg: WithdrawalTypeArg;
withdrawFrom: WithdrawFrom;
}): Extract<CallArg, { FundsWithdrawal: unknown }> {
return {
$kind: 'FundsWithdrawal',
FundsWithdrawal: {
reservation,
typeArg,
withdrawFrom,
},
};
},
};