import { MemberId, MemberUsername, OperationId } from "./identifiers"; export declare enum OperationType { CREATE_MEMBER = "CREATE_MEMBER", EDIT_MEMBER = "EDIT_MEMBER", FLAG_MEMBER = "FLAG_MEMBER", RESOLVE_FLAG_MEMBER = "RESOLVE_FLAG_MEMBER", REQUEST_VERIFICATION = "REQUEST_VERIFICATION", VERIFY = "VERIFY", INVITE = "INVITE", TRUST = "TRUST", MINT = "MINT", GIVE = "GIVE" } export interface CreateMemberPayload { full_name: string; request_invite_from_member_id?: MemberId; username: MemberUsername; } export interface EditMemberPayload { full_name?: string; username?: string; } export interface FlagMemberPayload { to_uid: MemberId; reason: string; } export interface ResolveFlagMemberPayload { to_uid: MemberId; flag_operation_id: OperationId; reason: string; } export interface RequestVerificationPayload { to_uid: MemberId; invite_token?: string; } export interface VerifyPayload { to_uid: MemberId; video_url: string; } export interface InvitePayload { invite_token: string; is_joint_video: boolean; video_token: string; } export interface TrustPayload { to_uid: MemberId; } export declare enum MintType { BASIC_INCOME = "BASIC_INCOME", REFERRAL_BONUS = "REFERRAL_BONUS", INVITED_BONUS = "INVITED_BONUS" } export interface MintBasicIncomePayload { type: MintType.BASIC_INCOME; amount: string; } export interface MintReferralBonusPayload { type: MintType.REFERRAL_BONUS; amount: string; invited_member_id: MemberId; } export interface MintInvitedBonusPayload { type: MintType.INVITED_BONUS; amount: string; } export declare type MintPayload = MintBasicIncomePayload | MintReferralBonusPayload | MintInvitedBonusPayload; export interface MintReferralBonusOperation extends MintOperation { data: MintReferralBonusPayload; } export interface MintBasicIncomeOperation extends MintOperation { data: MintBasicIncomePayload; } export interface MintInvitedBonus extends MintOperation { data: MintInvitedBonusPayload; } export declare enum GiveType { DIRECT_GIVE = "DIRECT_GIVE", TIP = "TIP" } export interface DirectGiveMetadata { type: GiveType.DIRECT_GIVE; memo?: string; } export interface TipMetadata { type: GiveType.TIP; memo?: string; targetOperationId: OperationId; } export interface DirectGivePayload extends GivePayload { metadata: DirectGiveMetadata; } export interface TipGivePayload extends GivePayload { metadata: TipMetadata; } export interface DirectGiveOperation extends GiveOperation { data: DirectGivePayload; } export interface TipGiveOperation extends GiveOperation { data: TipGivePayload; } export interface GivePayload { to_uid: MemberId; amount: string; donation_to: MemberId; donation_amount: string; metadata?: DirectGiveMetadata | TipMetadata; memo?: string; } export interface ToSaveOperationBase { creator_uid: MemberId; } export interface SavedOperationBase { id: OperationId; creator_uid: MemberId; created_at: Date; } interface CreateMemberOperationMetadata { op_code: OperationType.CREATE_MEMBER; data: CreateMemberPayload; } export declare type CreateMemberOperation = SavedOperationBase & CreateMemberOperationMetadata; export declare type CreateMemberOperationToBeCreated = ToSaveOperationBase & CreateMemberOperationMetadata; interface EditMemberOperationMetadata { op_code: OperationType.EDIT_MEMBER; data: EditMemberPayload; } export declare type EditMemberOperation = SavedOperationBase & EditMemberOperationMetadata; export declare type EditMemberOperationToBeCreated = ToSaveOperationBase & EditMemberOperationMetadata; interface FlagMemberOperationMetadata { op_code: OperationType.FLAG_MEMBER; data: FlagMemberPayload; } export declare type FlagMemberOperation = SavedOperationBase & FlagMemberOperationMetadata; export declare type FlagMemberOperationToBeCreated = ToSaveOperationBase & FlagMemberOperationMetadata; interface ResolveFlagMemberOperationMetadata { op_code: OperationType.RESOLVE_FLAG_MEMBER; data: ResolveFlagMemberPayload; } export declare type ResolveFlagMemberOperation = SavedOperationBase & ResolveFlagMemberOperationMetadata; export declare type ResolveFlagMemberOperationToBeCreated = ToSaveOperationBase & ResolveFlagMemberOperationMetadata; interface RequestVerificationMetadata { op_code: OperationType.REQUEST_VERIFICATION; data: RequestVerificationPayload; } export declare type RequestVerificationOperation = SavedOperationBase & RequestVerificationMetadata; export declare type RequestVerificationOperationToBeCreated = ToSaveOperationBase & RequestVerificationMetadata; interface VerifyOperationMetadata { op_code: OperationType.VERIFY; data: VerifyPayload; } export declare type VerifyOperation = SavedOperationBase & VerifyOperationMetadata; export declare type VerifyOperationToBeCreated = ToSaveOperationBase & VerifyOperationMetadata; interface InviteOperationMetadata { op_code: OperationType.INVITE; data: InvitePayload; } export declare type InviteOperation = SavedOperationBase & InviteOperationMetadata; export declare type InviteOperationToBeCreated = ToSaveOperationBase & InviteOperationMetadata; export interface TrustOperationMetadata { op_code: OperationType.TRUST; data: TrustPayload; } export declare type TrustOperation = SavedOperationBase & TrustOperationMetadata; export declare type TrustOperationToBeCreated = ToSaveOperationBase & TrustOperationMetadata; export interface MintOperationMetadata { op_code: OperationType.MINT; data: MintPayload; } export declare type MintOperation = SavedOperationBase & MintOperationMetadata; export declare type MintOperationToBeCreated = ToSaveOperationBase & MintOperationMetadata; export interface GiveOperationMetadata { op_code: OperationType.GIVE; data: GivePayload; } export declare type GiveOperation = SavedOperationBase & GiveOperationMetadata; export declare type GiveOperationToBeCreated = ToSaveOperationBase & GiveOperationMetadata; export declare type Operation = CreateMemberOperation | EditMemberOperation | FlagMemberOperation | ResolveFlagMemberOperation | RequestVerificationOperation | VerifyOperation | InviteOperation | TrustOperation | MintOperation | GiveOperation; export declare type OperationToBeCreated = CreateMemberOperationToBeCreated | EditMemberOperationToBeCreated | FlagMemberOperationToBeCreated | ResolveFlagMemberOperationToBeCreated | RequestVerificationOperationToBeCreated | VerifyOperationToBeCreated | InviteOperationToBeCreated | TrustOperationToBeCreated | MintOperationToBeCreated | GiveOperationToBeCreated; export {}; //# sourceMappingURL=Operation.d.ts.map