UNPKG

@tiplink/api

Version:

Api for creating and sending TipLinks

274 lines (273 loc) 7.79 kB
import { PublicKey } from "@solana/web3.js"; import { TipLink } from "./index"; import { Themeable } from "./lib/themes"; import { decrypt } from "./crypto"; export { decrypt }; export declare const ON_CHAIN_NAME_CHAR_LIMIT = 32; export declare const ON_CHAIN_SYMBOL_CHAR_LIMIT = 10; type ArgT = string | number | boolean | string[] | number[]; export declare class TipLinkClient { apiKey: string; version: number; publicKey?: string; id?: number; campaigns: CampaignActions; mints: MintActions; constructor(apiKey: string, version?: number); static init(apiKey: string, version?: number): Promise<TipLinkClient>; fetch(endpoint: string, args?: Record<string, ArgT> | null, body?: Record<string, unknown> | Array<Record<string, unknown>> | FormData | null, verb?: string): Promise<any>; } declare class TipLinkApi { client: TipLinkClient; constructor(client: TipLinkClient); } interface CampaignCreateParams extends Themeable { name: string; description: string; imageUrl: string; active: boolean; } interface CampaignActionsConstructor { client: TipLinkClient; } interface CampaignFindParams { id: number; name: string; description: string; imageUrl: string; active: boolean; } interface CampaignAllParams { id: number; name: string; description: string; imageUrl: string; active: boolean; limit: number; offset: number; sorting: string; } interface AnalyticsSummary { event_type_counts: Record<string, number>[]; total: number; faucets_info: Record<string, number>[]; campaign_info: Record<string, number>[]; } declare enum EventType { CREATED = "CREATED", ACCESSED = "ACCESSED", CLAIMED = "CLAIMED", CLAIMED_BACK = "CLAIMED_BACK" } interface Analytic { public_key: PublicKey; event: EventType; created_at: Date; } declare class CampaignActions extends TipLinkApi { constructor(params: CampaignActionsConstructor); create(params: CampaignCreateParams): Promise<Campaign>; find(params: CampaignFindParams): Promise<Campaign>; all(params: CampaignAllParams): Promise<Campaign[]>; } interface GetEntriesParams { id: number | number[]; limit: number; offset: number; sorting: string | string[]; } interface CampaignConstructorParams extends Themeable { client: TipLinkClient; id: number; name: string; description: string; imageUrl: string; active: boolean; } export declare class Campaign extends TipLinkApi { id: number; name: string; description: string; imageUrl: string; active: boolean; themeId?: number; encryptionKey?: string; encryptionSalt?: string; dispensers: DispenserActions; constructor(params: CampaignConstructorParams); addEntries(tiplinks: TipLink[]): Promise<boolean>; hideEntries(tiplinks: TipLink[] | PublicKey[]): Promise<boolean>; getEntries(params: GetEntriesParams): Promise<TipLink[] | null>; getAnalytic(publicKey: string): Promise<Analytic | null>; getAnalytics(): Promise<AnalyticsSummary>; share(email: string, admin?: boolean): Promise<boolean>; } interface CreateDispenserParams { useCaptcha: boolean; useFingerprint: boolean; unlimitedClaims: boolean; active?: boolean; includedEntryIds?: number[]; excludedEntryIds?: number[]; } interface DispenserActionsConstructorParams { client: TipLinkClient; campaign: Campaign; } interface DispenserFindParams { id: number; name: string; description: string; imageUrl: string; active: boolean; } interface DispenserAllParams { id: number; name: string; description: string; imageUrl: string; active: boolean; limit: number; offset: number; sorting: string; } declare class DispenserActions extends TipLinkApi { campaign: Campaign; constructor(params: DispenserActionsConstructorParams); create(params: CreateDispenserParams): Promise<Dispenser>; find(params: DispenserFindParams): Promise<Dispenser>; all(params: DispenserAllParams): Promise<Dispenser[]>; } interface DispenserConstructorParams { client: TipLinkClient; campaign: Campaign; id: number; urlSlug: string; useCaptcha: boolean; useFingerprint: boolean; unlimitedClaims: boolean; active: boolean; } export declare class Dispenser extends TipLinkApi { campaign: Campaign; id: number; urlSlug: string; useCaptcha: boolean; useFingerprint: boolean; unlimitedClaims: boolean; active: boolean; url: URL; constructor(params: DispenserConstructorParams); private getUrl; pause(): Promise<boolean>; resume(): Promise<boolean>; refresh(): Promise<URL>; delete(): Promise<boolean>; } interface MintActionsConstructor { client: TipLinkClient; } export declare enum DataHost { Arweave = "arweave", Shadow = "shadow" } interface MintConstructorParams extends Themeable { client: TipLinkClient; id: number; campaign_id: number; campaignName: string; imageUrl: string; externalUrl?: string; dataHost: DataHost; mintName: string; symbol: string; mintDescription?: string; mintLimit: number; attributes?: Record<string, string>[]; creatorPublicKey: PublicKey; collectionId: string; treeAddress: string; jsonUri: string; collectionUri: string; royalties: number; primaryUrlSlug: string; rotatingUrlSlug: string; useRotating: boolean; rotatingTimeInterval: number; totpWindow: number; userClaimLimit: number; royaltiesDestination?: PublicKey | null; } interface MintCreateParams extends Themeable { campaignName: string; campaignDescription?: string; mintName: string; mintDescription?: string; symbol: string; mintLimit: number; mintImageUrl: string; externalUrl?: string; existingCollectionId?: string; creatorPublicKey: PublicKey; royalties?: number; royaltiesDestination?: PublicKey; attributes?: Record<string, string>; dataHost?: DataHost; feeTransactionHash?: string; } interface MintFindParams { campaign_id: string; } interface FeeResponse { publicKey: PublicKey; feeLamports: number; } interface IndividualLinkGetMintActivityParam { urlSlug: string; destination: never; } type GetMintActivityParam = IndividualLinkGetMintActivityParam; interface MintActivity { claim_txn: string; timestamp: Date; destination: PublicKey; } declare class MintActions extends TipLinkApi { constructor(params: MintActionsConstructor); private transformAttributes; private isValidUrl; getFees(params: MintCreateParams): Promise<FeeResponse>; create(params: MintCreateParams): Promise<Mint>; find(params: MintFindParams): Promise<Mint>; } export declare class Mint extends TipLinkApi { id: number; campaign_id: number; campaignName: string; imageUrl: string; externalUrl: string; dataHost: DataHost; mintName: string; symbol: string; mintDescription: string; mintLimit: number; attributes: Record<string, string>[]; creatorPublicKey: PublicKey; collectionId: string; treeAddress: string; jsonUri: string; collectionUri: string; royalties: number; primaryUrlSlug: string; rotatingUrlSlug: string; useRotating: boolean; rotatingTimeInterval: number; totpWindow: number; userClaimLimit: number; royaltiesDestination?: PublicKey | null; constructor(params: MintConstructorParams); getMintUrl(): URL; getAnalytics(): Promise<AnalyticsSummary>; getMintActivity(params: GetMintActivityParam): Promise<MintActivity | null>; share(email: string, admin?: boolean): Promise<boolean>; }