import { IResponse, AuthorizedOptionalRequest, } from '../interfaces/common'; import TPayload from '../types/TPayload'; import IPayOptions from '../interfaces/IPaymentOptions'; import TokenDataSummary from '../interfaces/TokenDataSummary'; export interface DeliveryService { payment(request: IPaymentRequest): Promise checkRefStatus(request: CheckRefStatusRequest): Promise verifyNFTOwnership(request: VerifyNFTOwnershipRequest): Promise swapNFT(request: SwapNFTRequest): Promise emptyWallet(request: EmptyWalletRequest): Promise } /** ****************************************************************************** * Deliver Pay Transaction ******************************************************************************* */ export interface IPaymentParams { account: string; options: IPayOptions; } export type TPaymentPayload = TPayload export interface IPaymentRequest extends AuthorizedOptionalRequest { params: IPaymentParams; } export interface IPaymentResponse extends IResponse { txBuffer?: Buffer; } /** ****************************************************************************** * Check Status by Ref ******************************************************************************* */ export interface CheckRefStatusParams { ref: string; } export type TCheckRefStatusPayload = TPayload export interface CheckRefStatusRequest extends AuthorizedOptionalRequest { params: CheckRefStatusParams; } export interface CheckRefStatusResponse extends IResponse { signature?: string | null; } /** ****************************************************************************** * Verify Token Ownership ******************************************************************************* */ export interface VerifyNFTOwnershipParams { account: string; collection: string; traits?: Record } export interface VerifyNFTOwnershipQueryStringParams extends VerifyNFTOwnershipParams{ trait?: string | string[]; } export type TVerifyNFTOwnershipPayload = TPayload export interface VerifyNFTOwnershipRequest extends AuthorizedOptionalRequest { params: VerifyNFTOwnershipParams; } export interface VerifyNFTOwnershipResponse extends IResponse { success?: boolean; tokens?: TokenDataSummary[]; } /** ****************************************************************************** * Swap NFT ******************************************************************************* */ export interface SwapNFTParams { account: string; } export type TSwapNFTPayload = TPayload export interface SwapNFTRequest extends AuthorizedOptionalRequest { params: SwapNFTParams; } export interface SwapNFTResponse extends IResponse { txBuffer?: Buffer; } /** ****************************************************************************** * Empty Wallet ******************************************************************************* */ export interface EmptyWalletParams { account: string; } export type TEmptyWalletPayload = TPayload export interface EmptyWalletRequest extends AuthorizedOptionalRequest { params: EmptyWalletParams; } export interface EmptyWalletResponse extends IResponse { txBuffer?: Buffer; }