diff --git a/src/components/Campaigns/CloseCampaignModal.tsx b/src/components/Campaigns/CloseCampaignModal.tsx
new file mode 100644
index 000000000..c0df6ca57
--- /dev/null
+++ b/src/components/Campaigns/CloseCampaignModal.tsx
@@ -0,0 +1,134 @@
+import { graphql } from "@/graphql-client/index";
+import { Box, Button, Modal, Stack, Typography } from "@mui/material";
+import { useContext, useState } from "react";
+import { modalStyles } from "@/theme";
+import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser";
+import { useMutation } from "@apollo/client";
+import BigNumber from "bignumber.js";
+import { Trans } from "@lingui/macro";
+import { useHistory } from "react-router-dom";
+import { FilterContext } from "@/state/context";
+import {
+ AdvertiserCampaignsDocument,
+ CampaignSummaryFragment,
+} from "@/graphql-client/graphql";
+import CancelIcon from "@mui/icons-material/Cancel";
+
+const ForceCampaignComplete = graphql(`
+ mutation ForceCampaignComplete($id: String!) {
+ forceCampaignCompletionAndTransferFunds(id: $id)
+ }
+`);
+
+interface Props {
+ campaign?: Pick<
+ CampaignSummaryFragment,
+ "id" | "hasInProcessOrCompleteTransfer" | "adsManagerCurrentBalance"
+ >;
+ type: "form" | "inline";
+ disabled?: boolean;
+}
+
+export function CloseCampaignModal({ campaign, type, disabled }: Props) {
+ const history = useHistory();
+ const [open, setOpen] = useState(false);
+ const { advertiser } = useAdvertiser();
+ const { fromDate } = useContext(FilterContext);
+
+ const [mutate, { loading: mutating }] = useMutation(ForceCampaignComplete, {
+ variables: { id: campaign?.id ?? "" },
+ });
+
+ const isInline = type === "inline";
+ const currentBalance = BigNumber(campaign?.adsManagerCurrentBalance ?? 0);
+ const hasNoBalance = currentBalance.lte(0);
+ if (!isInline && hasNoBalance) return null;
+ const hasInProcessOrCompleteTransfer =
+ campaign?.hasInProcessOrCompleteTransfer ?? false;
+
+ const doMutate = () => {
+ mutate({
+ refetchQueries: [
+ {
+ query: AdvertiserCampaignsDocument,
+ variables: {
+ id: advertiser.id,
+ filter: { from: fromDate?.toISOString() },
+ },
+ },
+ ],
+ onCompleted: (data) => {
+ if (window.confirm(data.forceCampaignCompletionAndTransferFunds)) {
+ history.replace("/user/main/campaign");
+ } else {
+ window.location.reload();
+ }
+ },
+ });
+ };
+
+ return (
+ <>
+ : undefined}
+ onClick={() => {
+ setOpen(true);
+ }}
+ >
+ {isInline && Close}
+ {!isInline && Close Campaign}
+
+ setOpen(false)}>
+
+
+ You are about to close this campaign.
+
+
+
+
+ Closing a campaign will immediately stop it from running. Once it
+ has stopped running, any remaining funds will be transferred back
+ to your account in 24-48 hours.
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/components/Datagrid/renderers.tsx b/src/components/Datagrid/renderers.tsx
index 2140fd7e9..961e70953 100644
--- a/src/components/Datagrid/renderers.tsx
+++ b/src/components/Datagrid/renderers.tsx
@@ -73,7 +73,7 @@ export const StandardRenderers: Record = {
};
export function renderMonetaryAmount(
- value: BigNumber | number,
+ value: BigNumber | number | string,
currency: string,
) {
const val = BigNumber(value);
diff --git a/src/components/Steps/ActionButtons.tsx b/src/components/Steps/ActionButtons.tsx
index 6e6179e00..729689de3 100644
--- a/src/components/Steps/ActionButtons.tsx
+++ b/src/components/Steps/ActionButtons.tsx
@@ -7,6 +7,7 @@ import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import RemoveIcon from "@mui/icons-material/Remove";
import { Link as RouterLink } from "react-router-dom";
import { Trans } from "@lingui/macro";
+import { CloseCampaignSidebar } from "@/components/Steps/CloseCampaignSidebar";
export function ActionButtons() {
const { values } = useFormikContext();
@@ -37,6 +38,8 @@ export function ActionButtons() {
>
Return to dashboard
+
+
);
}
diff --git a/src/components/Steps/CloseCampaignSidebar.tsx b/src/components/Steps/CloseCampaignSidebar.tsx
new file mode 100644
index 000000000..e47982aec
--- /dev/null
+++ b/src/components/Steps/CloseCampaignSidebar.tsx
@@ -0,0 +1,35 @@
+import { graphql } from "@/graphql-client/index";
+import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser";
+import { useQuery } from "@apollo/client";
+import { useField } from "formik";
+import { CloseCampaignModal } from "@/components/Campaigns/CloseCampaignModal";
+
+const CampaignTransferStatus = graphql(`
+ query CampaignTransferStatus($id: String!) {
+ campaign(id: $id) {
+ id
+ adsManagerCurrentBalance
+ hasInProcessOrCompleteTransfer
+ }
+ }
+`);
+
+export function CloseCampaignSidebar() {
+ const [, meta] = useField("id");
+ const { advertiser } = useAdvertiser();
+
+ const { data, loading } = useQuery(CampaignTransferStatus, {
+ variables: { id: meta.value ?? "" },
+ skip:
+ !meta.value ||
+ (!advertiser.selfServiceManageCampaign && advertiser.selfServiceSetPrice),
+ fetchPolicy: "cache-and-network",
+ });
+
+ if (!data || !data?.campaign || loading) return null;
+ const campaign = data.campaign;
+
+ return (
+
+ );
+}
diff --git a/src/graphql-client/gql.ts b/src/graphql-client/gql.ts
index 3d3aaf64b..f271eab9a 100644
--- a/src/graphql-client/gql.ts
+++ b/src/graphql-client/gql.ts
@@ -17,10 +17,12 @@ const documents = {
"\n mutation AdsManagerUpdateCreativeState($id: String!, $state: String!) {\n adsManagerUpdateCreativeState(id: $id, state: $state) {\n id\n }\n }\n": types.AdsManagerUpdateCreativeStateDocument,
"\n mutation AdsManagerUpdateCreativePayload(\n $input: AdsManagerUpdateCreativeInput!\n ) {\n adsManagerUpdateCreativePayload(adsManagerUpdateCreativeInput: $input) {\n id\n }\n }\n": types.AdsManagerUpdateCreativePayloadDocument,
"\n mutation UpdateAdSetState($id: String!, $state: AdSetState!) {\n adsManagerUpdateAdSetState(id: $id, state: $state) {\n id\n }\n }\n ": types.UpdateAdSetStateDocument,
+ "\n mutation ForceCampaignComplete($id: String!) {\n forceCampaignCompletionAndTransferFunds(id: $id)\n }\n": types.ForceCampaignCompleteDocument,
+ "\n query CampaignTransferStatus($id: String!) {\n campaign(id: $id) {\n id\n adsManagerCurrentBalance\n hasInProcessOrCompleteTransfer\n }\n }\n": types.CampaignTransferStatusDocument,
"fragment AdSet on AdSet {\n id\n price\n createdAt\n billingType\n name\n totalMax\n perDay\n state\n segments {\n code\n name\n }\n oses {\n code\n name\n }\n conversions {\n id\n type\n urlPattern\n observationWindow\n }\n ads {\n ...Ad\n }\n}\n\nfragment Ad on Ad {\n id\n state\n creative {\n ...Creative\n }\n}\n\nfragment AdSetWithDeletedAds on AdSet {\n id\n createdAt\n name\n state\n billingType\n oses {\n code\n name\n }\n segments {\n code\n name\n }\n conversions {\n id\n }\n ads(includeDeleted: true) {\n ...Ad\n }\n}": types.AdSetFragmentDoc,
"fragment AdvertiserBillingAddress on Advertiser {\n billingAddress {\n id\n street1\n street2\n city\n country\n state\n zipcode\n }\n}\n\nquery Advertiser($id: String!) {\n advertiser(id: $id) {\n id\n publicKey\n }\n}\n\nfragment AdvertiserCampaigns on Advertiser {\n id\n name\n selfServiceManageCampaign\n selfServiceSetPrice\n campaigns {\n ...CampaignSummary\n }\n}\n\nquery AdvertiserCampaigns($id: String!, $filter: AdvertiserCampaignFilter) {\n advertiserCampaigns(id: $id, filter: $filter) {\n ...AdvertiserCampaigns\n }\n}\n\nfragment AdvertiserImage on AdvertiserImage {\n name\n imageUrl\n format\n id\n createdAt\n}\n\nfragment AdvertiserPrice on AdvertiserPrice {\n billingModelPrice\n billingType\n format\n}\n\nquery AdvertiserImages($id: String!) {\n advertiser(id: $id) {\n id\n images {\n ...AdvertiserImage\n }\n }\n}\n\nquery AdvertiserPrices($id: String!) {\n advertiser(id: $id) {\n id\n prices {\n ...AdvertiserPrice\n }\n }\n}\n\nquery AdvertiserBillingAddress($id: String!) {\n advertiser(id: $id) {\n id\n ...AdvertiserBillingAddress\n }\n}\n\nmutation UploadAdvertiserImage($input: CreateAdvertiserImageInput!) {\n createAdvertiserImage(createImageInput: $input) {\n id\n name\n }\n}": types.AdvertiserBillingAddressFragmentDoc,
"fragment CampaignMetricSummaryValues on Metrics {\n click\n impression\n siteVisit\n spendUsd\n rates {\n clickThrough\n }\n}\n\nquery CampaignMetrics($campaignIds: [String!]!) {\n performance(filter: {campaignIds: $campaignIds}) {\n values {\n dimensions {\n campaign {\n id\n }\n }\n metrics {\n ...CampaignMetricSummaryValues\n }\n }\n }\n}\n\nfragment CampaignMetricDetailValues on Metrics {\n click\n impression\n siteVisit\n conversion\n dismiss\n spendUsd\n rates {\n clickThrough\n clickToConversion\n costPerAcquisition\n }\n}\n\nfragment DailyValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery FetchDailyMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...DailyValues\n }\n total {\n metrics {\n ...CampaignMetricDetailValues\n }\n }\n }\n}\n\nfragment AdSetValues on Performance {\n dimensions {\n adSet {\n id\n name\n state\n billingType\n }\n }\n metrics {\n ...CampaignMetricDetailValues\n }\n}\n\nquery FetchAdSetMetricsForCampaign($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...AdSetValues\n }\n }\n}": types.CampaignMetricSummaryValuesFragmentDoc,
- "fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n createdAt\n startAt\n endAt\n source\n type\n format\n dayProportion\n brandedKeywords\n advertiser {\n id\n name\n }\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}": types.CampaignFragmentDoc,
+ "fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n createdAt\n startAt\n endAt\n source\n type\n format\n dayProportion\n brandedKeywords\n adsManagerCurrentBalance\n hasInProcessOrCompleteTransfer\n advertiser {\n id\n name\n }\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}": types.CampaignFragmentDoc,
"fragment Geocode on Geocode {\n code\n name\n}\n\nfragment Segment on Segment {\n code\n name\n}\n\nquery ActiveGeocodes {\n geocodes {\n ...Geocode\n }\n}\n\nquery Segments {\n segments {\n data {\n ...Segment\n }\n }\n}": types.GeocodeFragmentDoc,
"fragment Creative on Creative {\n id\n createdAt\n modifiedAt\n name\n state\n type {\n code\n }\n payloadNotification {\n body\n title\n targetUrl\n }\n payloadNewTabPage {\n logo {\n imageUrl\n alt\n companyName\n destinationUrl\n }\n wallpapers {\n imageUrl\n focalPoint {\n x\n y\n }\n }\n }\n payloadInlineContent {\n title\n ctaText\n imageUrl\n targetUrl\n dimensions\n description\n }\n payloadSearch {\n body\n title\n targetUrl\n }\n payloadSearchHomepage {\n body\n imageUrl\n imageDarkModeUrl\n targetUrl\n title\n ctaText\n }\n}\n\nquery AdvertiserCreatives($advertiserId: String!) {\n advertiser(id: $advertiserId) {\n id\n creatives {\n ...Creative\n }\n }\n}\n\nmutation CreateCreative($input: CreativeInput!) {\n createCreative(creative: $input) {\n ...Creative\n }\n}\n\nquery LoadCreative($id: String!) {\n creative(id: $id) {\n ...Creative\n }\n}\n\nquery CampaignsForCreative($creativeId: String!, $advertiserId: String!) {\n creativeCampaigns(creativeId: $creativeId, advertiserId: $advertiserId) {\n id\n name\n state\n format\n }\n}": types.CreativeFragmentDoc,
"fragment DisplayedMetrics on Metrics {\n impression\n click\n siteVisit\n conversion\n viewThroughConversion\n clickThroughConversion\n dismiss\n spendUsd\n upvote\n downvote\n rates {\n clickThrough\n clickToConversion\n clickToSiteVisit\n impressionToSiteVisit\n impressionToDismiss\n costPerAcquisition\n }\n}\n\nfragment DailyMetricValues on Performance {\n dimensions {\n day\n }\n metrics {\n ...DisplayedMetrics\n }\n}": types.DisplayedMetricsFragmentDoc,
@@ -32,6 +34,7 @@ const documents = {
"\n query OSBreakdown($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n dimensions {\n os\n }\n metrics {\n ...DisplayedMetrics\n }\n }\n }\n }\n": types.OsBreakdownDocument,
"\n query HourlyGraph($filter: PerformanceFilter!) {\n performance(filter: $filter) {\n values {\n ...HourlyValues\n }\n }\n }\n\n fragment HourlyValues on Performance {\n dimensions {\n hour\n }\n metrics {\n ...DisplayedMetrics\n }\n }\n": types.HourlyGraphDocument,
"\n mutation UpdateCurrentUser($input: UpdateCurrentUserInput!) {\n updateCurrentUser(input: $input) {\n ...User\n }\n }\n": types.UpdateCurrentUserDocument,
+ "\n query CurrentAdvertiserBalance($id: String!) {\n advertiser(id: $id) {\n id\n accountBalance\n }\n }\n": types.CurrentAdvertiserBalanceDocument,
"\n mutation AdsManagerUpdateCampaign($input: AdsManagerUpdateCampaignInput!) {\n adsManagerUpdateCampaign(adsManagerUpdateCampaignInput: $input) {\n id\n }\n }\n": types.AdsManagerUpdateCampaignDocument,
"\n query LoadCampaignSummary($id: String!) {\n campaign(id: $id) {\n ...CampaignOverview\n }\n }\n\n fragment CampaignOverview on Campaign {\n ...CampaignSummary\n adSets {\n id\n conversions {\n id\n extractExternalId\n }\n }\n }\n": types.LoadCampaignSummaryDocument,
"\n query CreateSearchCampaignLandingPageList(\n $domain: String!\n $country: String!\n $offset: Float!\n $limit: Float!\n ) {\n searchProspects {\n landingPagesWithStats(\n country: $country\n domain: $domain\n offset: $offset\n limit: $limit\n ) {\n ...SearchProspectsLandingPageList\n }\n }\n }\n\n fragment SearchProspectsLandingPageList on SearchLandingPageWithStats {\n url\n rank\n lastSeen\n favicon\n creatives {\n title\n body\n lastSeen\n }\n }\n": types.CreateSearchCampaignLandingPageListDocument,
@@ -68,6 +71,14 @@ export function graphql(source: "\n mutation AdsManagerUpdateCreativePayload(\n
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n mutation UpdateAdSetState($id: String!, $state: AdSetState!) {\n adsManagerUpdateAdSetState(id: $id, state: $state) {\n id\n }\n }\n "): (typeof documents)["\n mutation UpdateAdSetState($id: String!, $state: AdSetState!) {\n adsManagerUpdateAdSetState(id: $id, state: $state) {\n id\n }\n }\n "];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n mutation ForceCampaignComplete($id: String!) {\n forceCampaignCompletionAndTransferFunds(id: $id)\n }\n"): (typeof documents)["\n mutation ForceCampaignComplete($id: String!) {\n forceCampaignCompletionAndTransferFunds(id: $id)\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n query CampaignTransferStatus($id: String!) {\n campaign(id: $id) {\n id\n adsManagerCurrentBalance\n hasInProcessOrCompleteTransfer\n }\n }\n"): (typeof documents)["\n query CampaignTransferStatus($id: String!) {\n campaign(id: $id) {\n id\n adsManagerCurrentBalance\n hasInProcessOrCompleteTransfer\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -83,7 +94,7 @@ export function graphql(source: "fragment CampaignMetricSummaryValues on Metrics
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
-export function graphql(source: "fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n createdAt\n startAt\n endAt\n source\n type\n format\n dayProportion\n brandedKeywords\n advertiser {\n id\n name\n }\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}"): (typeof documents)["fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n createdAt\n startAt\n endAt\n source\n type\n format\n dayProportion\n brandedKeywords\n advertiser {\n id\n name\n }\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}"];
+export function graphql(source: "fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n createdAt\n startAt\n endAt\n source\n type\n format\n dayProportion\n brandedKeywords\n adsManagerCurrentBalance\n hasInProcessOrCompleteTransfer\n advertiser {\n id\n name\n }\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}"): (typeof documents)["fragment Campaign on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n spent\n createdAt\n startAt\n endAt\n source\n type\n format\n paymentType\n dayProportion\n stripePaymentId\n hasPaymentIntent\n dayPartings {\n dow\n startMinute\n endMinute\n }\n geoTargets {\n code\n name\n }\n adSets {\n ...AdSet\n }\n advertiser {\n id\n }\n}\n\nfragment CampaignSummary on Campaign {\n id\n name\n state\n dailyCap\n priority\n passThroughRate\n pacingOverride\n pacingStrategy\n externalId\n currency\n budget\n paymentType\n createdAt\n startAt\n endAt\n source\n type\n format\n dayProportion\n brandedKeywords\n adsManagerCurrentBalance\n hasInProcessOrCompleteTransfer\n advertiser {\n id\n name\n }\n}\n\nfragment CampaignAds on Campaign {\n id\n name\n state\n startAt\n endAt\n source\n currency\n format\n advertiser {\n id\n }\n adSets {\n ...AdSetWithDeletedAds\n }\n}\n\nquery LoadCampaign($id: String!) {\n campaign(id: $id) {\n ...Campaign\n }\n}\n\nquery LoadCampaignAds($id: String!) {\n campaign(id: $id) {\n ...CampaignAds\n }\n}\n\nmutation CreateCampaign($input: CreateCampaignInput!) {\n createCampaign(createCampaignInput: $input) {\n id\n paymentType\n }\n}\n\nmutation UpdateCampaign($input: UpdateCampaignInput!) {\n updateCampaign(updateCampaignInput: $input) {\n id\n paymentType\n stripePaymentId\n }\n}"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -128,6 +139,10 @@ export function graphql(source: "\n query HourlyGraph($filter: PerformanceFilte
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n mutation UpdateCurrentUser($input: UpdateCurrentUserInput!) {\n updateCurrentUser(input: $input) {\n ...User\n }\n }\n"): (typeof documents)["\n mutation UpdateCurrentUser($input: UpdateCurrentUserInput!) {\n updateCurrentUser(input: $input) {\n ...User\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n query CurrentAdvertiserBalance($id: String!) {\n advertiser(id: $id) {\n id\n accountBalance\n }\n }\n"): (typeof documents)["\n query CurrentAdvertiserBalance($id: String!) {\n advertiser(id: $id) {\n id\n accountBalance\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
diff --git a/src/graphql-client/graphql.ts b/src/graphql-client/graphql.ts
index e30f93719..3a3805f64 100644
--- a/src/graphql-client/graphql.ts
+++ b/src/graphql-client/graphql.ts
@@ -1703,6 +1703,20 @@ export type UpdateAdSetStateMutationVariables = Exact<{
export type UpdateAdSetStateMutation = { __typename?: 'Mutation', adsManagerUpdateAdSetState: { __typename?: 'AdSet', id: string } };
+export type ForceCampaignCompleteMutationVariables = Exact<{
+ id: Scalars['String']['input'];
+}>;
+
+
+export type ForceCampaignCompleteMutation = { __typename?: 'Mutation', forceCampaignCompletionAndTransferFunds: string };
+
+export type CampaignTransferStatusQueryVariables = Exact<{
+ id: Scalars['String']['input'];
+}>;
+
+
+export type CampaignTransferStatusQuery = { __typename?: 'Query', campaign?: { __typename?: 'Campaign', id: string, adsManagerCurrentBalance: string, hasInProcessOrCompleteTransfer: boolean } | null };
+
export type AdSetFragment = { __typename?: 'AdSet', id: string, price: string, createdAt: string, billingType?: string | null, name: string, totalMax: number, perDay: number, state: AdSetState, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, oses: Array<{ __typename?: 'OS', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, urlPattern: string, observationWindow: number }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> };
export type AdFragment = { __typename?: 'Ad', id: string, state: string, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } };
@@ -1718,7 +1732,7 @@ export type AdvertiserQueryVariables = Exact<{
export type AdvertiserQuery = { __typename?: 'Query', advertiser?: { __typename?: 'Advertiser', id: string, publicKey?: string | null } | null };
-export type AdvertiserCampaignsFragment = { __typename?: 'Advertiser', id: string, name: string, selfServiceManageCampaign: boolean, selfServiceSetPrice: boolean, campaigns: Array<{ __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, advertiser: { __typename?: 'Advertiser', id: string, name: string } }> };
+export type AdvertiserCampaignsFragment = { __typename?: 'Advertiser', id: string, name: string, selfServiceManageCampaign: boolean, selfServiceSetPrice: boolean, campaigns: Array<{ __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, adsManagerCurrentBalance: string, hasInProcessOrCompleteTransfer: boolean, advertiser: { __typename?: 'Advertiser', id: string, name: string } }> };
export type AdvertiserCampaignsQueryVariables = Exact<{
id: Scalars['String']['input'];
@@ -1726,7 +1740,7 @@ export type AdvertiserCampaignsQueryVariables = Exact<{
}>;
-export type AdvertiserCampaignsQuery = { __typename?: 'Query', advertiserCampaigns?: { __typename?: 'Advertiser', id: string, name: string, selfServiceManageCampaign: boolean, selfServiceSetPrice: boolean, campaigns: Array<{ __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, advertiser: { __typename?: 'Advertiser', id: string, name: string } }> } | null };
+export type AdvertiserCampaignsQuery = { __typename?: 'Query', advertiserCampaigns?: { __typename?: 'Advertiser', id: string, name: string, selfServiceManageCampaign: boolean, selfServiceSetPrice: boolean, campaigns: Array<{ __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, adsManagerCurrentBalance: string, hasInProcessOrCompleteTransfer: boolean, advertiser: { __typename?: 'Advertiser', id: string, name: string } }> } | null };
export type AdvertiserImageFragment = { __typename?: 'AdvertiserImage', name: string, imageUrl: string, format: CampaignFormat, id: string, createdAt: string };
@@ -1791,7 +1805,7 @@ export type FetchAdSetMetricsForCampaignQuery = { __typename?: 'Query', performa
export type CampaignFragment = { __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, spent: number, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, paymentType: PaymentType, dayProportion?: number | null, stripePaymentId?: string | null, hasPaymentIntent: boolean, dayPartings: Array<{ __typename?: 'DayParting', dow: string, startMinute: number, endMinute: number }>, geoTargets: Array<{ __typename?: 'Geocode', code: string, name: string }>, adSets: Array<{ __typename?: 'AdSet', id: string, price: string, createdAt: string, billingType?: string | null, name: string, totalMax: number, perDay: number, state: AdSetState, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, oses: Array<{ __typename?: 'OS', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string, type: string, urlPattern: string, observationWindow: number }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }>, advertiser: { __typename?: 'Advertiser', id: string } };
-export type CampaignSummaryFragment = { __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, advertiser: { __typename?: 'Advertiser', id: string, name: string } };
+export type CampaignSummaryFragment = { __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, adsManagerCurrentBalance: string, hasInProcessOrCompleteTransfer: boolean, advertiser: { __typename?: 'Advertiser', id: string, name: string } };
export type CampaignAdsFragment = { __typename?: 'Campaign', id: string, name: string, state: CampaignState, startAt: string, endAt: string, source: CampaignSource, currency: string, format: CampaignFormat, advertiser: { __typename?: 'Advertiser', id: string }, adSets: Array<{ __typename?: 'AdSet', id: string, createdAt: string, name: string, state: AdSetState, billingType?: string | null, oses: Array<{ __typename?: 'OS', code: string, name: string }>, segments: Array<{ __typename?: 'Segment', code: string, name: string }>, conversions: Array<{ __typename?: 'Conversion', id: string }>, ads: Array<{ __typename?: 'Ad', id: string, state: string, creative: { __typename?: 'Creative', id: string, createdAt: string, modifiedAt: string, name: string, state: string, type: { __typename?: 'CreativeType', code: string }, payloadNotification?: { __typename?: 'NotificationPayload', body: string, title: string, targetUrl: string } | null, payloadNewTabPage?: { __typename?: 'NewTabPagePayload', logo?: { __typename?: 'Logo', imageUrl: string, alt: string, companyName: string, destinationUrl: string } | null, wallpapers?: Array<{ __typename?: 'Wallpaper', imageUrl: string, focalPoint: { __typename?: 'FocalPoint', x: number, y: number } }> | null } | null, payloadInlineContent?: { __typename?: 'InlineContentPayload', title: string, ctaText: string, imageUrl: string, targetUrl: string, dimensions: string, description: string } | null, payloadSearch?: { __typename?: 'SearchPayload', body: string, title: string, targetUrl: string } | null, payloadSearchHomepage?: { __typename?: 'SearchHomepagePayload', body: string, imageUrl: string, imageDarkModeUrl?: string | null, targetUrl: string, title: string, ctaText: string } | null } }> }> };
@@ -1932,6 +1946,13 @@ export type UpdateCurrentUserMutationVariables = Exact<{
export type UpdateCurrentUserMutation = { __typename?: 'Mutation', updateCurrentUser: { __typename?: 'User', email: string, fullName: string, id: string, role: string } };
+export type CurrentAdvertiserBalanceQueryVariables = Exact<{
+ id: Scalars['String']['input'];
+}>;
+
+
+export type CurrentAdvertiserBalanceQuery = { __typename?: 'Query', advertiser?: { __typename?: 'Advertiser', id: string, accountBalance: string } | null };
+
export type AdsManagerUpdateCampaignMutationVariables = Exact<{
input: AdsManagerUpdateCampaignInput;
}>;
@@ -1944,9 +1965,9 @@ export type LoadCampaignSummaryQueryVariables = Exact<{
}>;
-export type LoadCampaignSummaryQuery = { __typename?: 'Query', campaign?: { __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, adSets: Array<{ __typename?: 'AdSet', id: string, conversions: Array<{ __typename?: 'Conversion', id: string, extractExternalId: boolean }> }>, advertiser: { __typename?: 'Advertiser', id: string, name: string } } | null };
+export type LoadCampaignSummaryQuery = { __typename?: 'Query', campaign?: { __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, adsManagerCurrentBalance: string, hasInProcessOrCompleteTransfer: boolean, adSets: Array<{ __typename?: 'AdSet', id: string, conversions: Array<{ __typename?: 'Conversion', id: string, extractExternalId: boolean }> }>, advertiser: { __typename?: 'Advertiser', id: string, name: string } } | null };
-export type CampaignOverviewFragment = { __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, adSets: Array<{ __typename?: 'AdSet', id: string, conversions: Array<{ __typename?: 'Conversion', id: string, extractExternalId: boolean }> }>, advertiser: { __typename?: 'Advertiser', id: string, name: string } };
+export type CampaignOverviewFragment = { __typename?: 'Campaign', id: string, name: string, state: CampaignState, dailyCap: number, priority: number, passThroughRate: number, pacingOverride: boolean, pacingStrategy: CampaignPacingStrategies, externalId?: string | null, currency: string, budget: number, paymentType: PaymentType, createdAt: string, startAt: string, endAt: string, source: CampaignSource, type: CampaignType, format: CampaignFormat, dayProportion?: number | null, brandedKeywords?: Array | null, adsManagerCurrentBalance: string, hasInProcessOrCompleteTransfer: boolean, adSets: Array<{ __typename?: 'AdSet', id: string, conversions: Array<{ __typename?: 'Conversion', id: string, extractExternalId: boolean }> }>, advertiser: { __typename?: 'Advertiser', id: string, name: string } };
export type CreateSearchCampaignLandingPageListQueryVariables = Exact<{
domain: Scalars['String']['input'];
@@ -1972,8 +1993,8 @@ export type SearchProspectsLandingPageDetailQuery = { __typename?: 'Query', sear
export type SearchProspectsLandingPageDetailFragment = { __typename?: 'SearchLandingPage', url: string, queries: Array<{ __typename?: 'SearchLandingPageQuery', query: string }> };
export const AdvertiserBillingAddressFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserBillingAddress"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingAddress"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"street1"}},{"kind":"Field","name":{"kind":"Name","value":"street2"}},{"kind":"Field","name":{"kind":"Name","value":"city"}},{"kind":"Field","name":{"kind":"Name","value":"country"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"zipcode"}}]}}]}}]} as unknown as DocumentNode;
-export const CampaignSummaryFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
-export const AdvertiserCampaignsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserCampaigns"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceManageCampaign"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceSetPrice"}},{"kind":"Field","name":{"kind":"Name","value":"campaigns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
+export const CampaignSummaryFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"adsManagerCurrentBalance"}},{"kind":"Field","name":{"kind":"Name","value":"hasInProcessOrCompleteTransfer"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
+export const AdvertiserCampaignsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserCampaigns"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceManageCampaign"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceSetPrice"}},{"kind":"Field","name":{"kind":"Name","value":"campaigns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"adsManagerCurrentBalance"}},{"kind":"Field","name":{"kind":"Name","value":"hasInProcessOrCompleteTransfer"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
export const AdvertiserImageFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserImage"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserImage"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]} as unknown as DocumentNode;
export const AdvertiserPriceFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserPrice"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserPrice"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingModelPrice"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"format"}}]}}]} as unknown as DocumentNode;
export const CampaignMetricSummaryValuesFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignMetricSummaryValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}}]}}]}}]} as unknown as DocumentNode;
@@ -1992,15 +2013,17 @@ export const DisplayedMetricsFragmentDoc = {"kind":"Document","definitions":[{"k
export const DailyMetricValuesFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DailyMetricValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Performance"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"day"}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"DisplayedMetrics"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DisplayedMetrics"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"viewThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"upvote"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToDismiss"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}}]} as unknown as DocumentNode;
export const UserFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"User"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"User"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}}]} as unknown as DocumentNode;
export const HourlyValuesFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"HourlyValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Performance"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hour"}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"DisplayedMetrics"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DisplayedMetrics"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"viewThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"upvote"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToDismiss"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}}]} as unknown as DocumentNode;
-export const CampaignOverviewFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignOverview"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"extractExternalId"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
+export const CampaignOverviewFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignOverview"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"extractExternalId"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"adsManagerCurrentBalance"}},{"kind":"Field","name":{"kind":"Name","value":"hasInProcessOrCompleteTransfer"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
export const SearchProspectsLandingPageListFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SearchProspectsLandingPageList"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SearchLandingPageWithStats"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"rank"}},{"kind":"Field","name":{"kind":"Name","value":"lastSeen"}},{"kind":"Field","name":{"kind":"Name","value":"favicon"}},{"kind":"Field","name":{"kind":"Name","value":"creatives"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"lastSeen"}}]}}]}}]} as unknown as DocumentNode;
export const SearchProspectsLandingPageDetailFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SearchProspectsLandingPageDetail"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SearchLandingPage"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"queries"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"query"}}]}}]}}]} as unknown as DocumentNode;
export const UpdateAdvertiserDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateAdvertiser"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AdsManagerUpdateAdvertiserInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adsManagerUpdateAdvertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"adsManagerUpdateAdvertiserInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"publicKey"}}]}}]}}]} as unknown as DocumentNode;
export const AdsManagerUpdateCreativeStateDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AdsManagerUpdateCreativeState"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"state"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adsManagerUpdateCreativeState"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"state"},"value":{"kind":"Variable","name":{"kind":"Name","value":"state"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode;
export const AdsManagerUpdateCreativePayloadDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AdsManagerUpdateCreativePayload"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AdsManagerUpdateCreativeInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adsManagerUpdateCreativePayload"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"adsManagerUpdateCreativeInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode;
export const UpdateAdSetStateDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateAdSetState"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"state"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AdSetState"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adsManagerUpdateAdSetState"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"state"},"value":{"kind":"Variable","name":{"kind":"Name","value":"state"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode;
+export const ForceCampaignCompleteDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ForceCampaignComplete"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"forceCampaignCompletionAndTransferFunds"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}]}}]} as unknown as DocumentNode;
+export const CampaignTransferStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CampaignTransferStatus"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"adsManagerCurrentBalance"}},{"kind":"Field","name":{"kind":"Name","value":"hasInProcessOrCompleteTransfer"}}]}}]}}]} as unknown as DocumentNode;
export const AdvertiserDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Advertiser"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"publicKey"}}]}}]}}]} as unknown as DocumentNode;
-export const AdvertiserCampaignsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdvertiserCampaigns"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserCampaignFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiserCampaigns"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserCampaigns"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserCampaigns"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceManageCampaign"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceSetPrice"}},{"kind":"Field","name":{"kind":"Name","value":"campaigns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}}]}}]}}]} as unknown as DocumentNode;
+export const AdvertiserCampaignsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdvertiserCampaigns"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserCampaignFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiserCampaigns"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserCampaigns"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"adsManagerCurrentBalance"}},{"kind":"Field","name":{"kind":"Name","value":"hasInProcessOrCompleteTransfer"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserCampaigns"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceManageCampaign"}},{"kind":"Field","name":{"kind":"Name","value":"selfServiceSetPrice"}},{"kind":"Field","name":{"kind":"Name","value":"campaigns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}}]}}]}}]} as unknown as DocumentNode;
export const AdvertiserImagesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdvertiserImages"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"images"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserImage"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserImage"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserImage"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]} as unknown as DocumentNode;
export const AdvertiserPricesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdvertiserPrices"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"prices"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserPrice"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserPrice"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AdvertiserPrice"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingModelPrice"}},{"kind":"Field","name":{"kind":"Name","value":"billingType"}},{"kind":"Field","name":{"kind":"Name","value":"format"}}]}}]} as unknown as DocumentNode;
export const AdvertiserBillingAddressDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdvertiserBillingAddress"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AdvertiserBillingAddress"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AdvertiserBillingAddress"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Advertiser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billingAddress"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"street1"}},{"kind":"Field","name":{"kind":"Name","value":"street2"}},{"kind":"Field","name":{"kind":"Name","value":"city"}},{"kind":"Field","name":{"kind":"Name","value":"country"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"zipcode"}}]}}]}}]} as unknown as DocumentNode;
@@ -2026,7 +2049,8 @@ export const CreativeBreakdownDocument = {"kind":"Document","definitions":[{"kin
export const OsBreakdownDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"OSBreakdown"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PerformanceFilter"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"performance"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"os"}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"DisplayedMetrics"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DisplayedMetrics"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"viewThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"upvote"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToDismiss"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}}]} as unknown as DocumentNode;
export const HourlyGraphDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"HourlyGraph"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filter"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PerformanceFilter"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"performance"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"values"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"HourlyValues"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DisplayedMetrics"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Metrics"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"impression"}},{"kind":"Field","name":{"kind":"Name","value":"click"}},{"kind":"Field","name":{"kind":"Name","value":"siteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"conversion"}},{"kind":"Field","name":{"kind":"Name","value":"viewThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickThroughConversion"}},{"kind":"Field","name":{"kind":"Name","value":"dismiss"}},{"kind":"Field","name":{"kind":"Name","value":"spendUsd"}},{"kind":"Field","name":{"kind":"Name","value":"upvote"}},{"kind":"Field","name":{"kind":"Name","value":"downvote"}},{"kind":"Field","name":{"kind":"Name","value":"rates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clickThrough"}},{"kind":"Field","name":{"kind":"Name","value":"clickToConversion"}},{"kind":"Field","name":{"kind":"Name","value":"clickToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToSiteVisit"}},{"kind":"Field","name":{"kind":"Name","value":"impressionToDismiss"}},{"kind":"Field","name":{"kind":"Name","value":"costPerAcquisition"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"HourlyValues"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Performance"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dimensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hour"}}]}},{"kind":"Field","name":{"kind":"Name","value":"metrics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"DisplayedMetrics"}}]}}]}}]} as unknown as DocumentNode;
export const UpdateCurrentUserDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateCurrentUser"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateCurrentUserInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateCurrentUser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"User"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"User"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"User"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}}]} as unknown as DocumentNode;
+export const CurrentAdvertiserBalanceDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CurrentAdvertiserBalance"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"accountBalance"}}]}}]}}]} as unknown as DocumentNode;
export const AdsManagerUpdateCampaignDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AdsManagerUpdateCampaign"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AdsManagerUpdateCampaignInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adsManagerUpdateCampaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"adsManagerUpdateCampaignInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode;
-export const LoadCampaignSummaryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LoadCampaignSummary"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignOverview"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignOverview"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"extractExternalId"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const LoadCampaignSummaryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LoadCampaignSummary"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"campaign"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignOverview"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"dailyCap"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"passThroughRate"}},{"kind":"Field","name":{"kind":"Name","value":"pacingOverride"}},{"kind":"Field","name":{"kind":"Name","value":"pacingStrategy"}},{"kind":"Field","name":{"kind":"Name","value":"externalId"}},{"kind":"Field","name":{"kind":"Name","value":"currency"}},{"kind":"Field","name":{"kind":"Name","value":"budget"}},{"kind":"Field","name":{"kind":"Name","value":"paymentType"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"source"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"format"}},{"kind":"Field","name":{"kind":"Name","value":"dayProportion"}},{"kind":"Field","name":{"kind":"Name","value":"brandedKeywords"}},{"kind":"Field","name":{"kind":"Name","value":"adsManagerCurrentBalance"}},{"kind":"Field","name":{"kind":"Name","value":"hasInProcessOrCompleteTransfer"}},{"kind":"Field","name":{"kind":"Name","value":"advertiser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CampaignOverview"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Campaign"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CampaignSummary"}},{"kind":"Field","name":{"kind":"Name","value":"adSets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"conversions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"extractExternalId"}}]}}]}}]}}]} as unknown as DocumentNode;
export const CreateSearchCampaignLandingPageListDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CreateSearchCampaignLandingPageList"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"domain"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"country"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"offset"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"searchProspects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"landingPagesWithStats"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"country"},"value":{"kind":"Variable","name":{"kind":"Name","value":"country"}}},{"kind":"Argument","name":{"kind":"Name","value":"domain"},"value":{"kind":"Variable","name":{"kind":"Name","value":"domain"}}},{"kind":"Argument","name":{"kind":"Name","value":"offset"},"value":{"kind":"Variable","name":{"kind":"Name","value":"offset"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SearchProspectsLandingPageList"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SearchProspectsLandingPageList"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SearchLandingPageWithStats"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"rank"}},{"kind":"Field","name":{"kind":"Name","value":"lastSeen"}},{"kind":"Field","name":{"kind":"Name","value":"favicon"}},{"kind":"Field","name":{"kind":"Name","value":"creatives"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"lastSeen"}}]}}]}}]} as unknown as DocumentNode;
export const SearchProspectsLandingPageDetailDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchProspectsLandingPageDetail"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"domain"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"country"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"url"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"searchProspects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"landingPage"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"country"},"value":{"kind":"Variable","name":{"kind":"Name","value":"country"}}},{"kind":"Argument","name":{"kind":"Name","value":"domain"},"value":{"kind":"Variable","name":{"kind":"Name","value":"domain"}}},{"kind":"Argument","name":{"kind":"Name","value":"url"},"value":{"kind":"Variable","name":{"kind":"Name","value":"url"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SearchProspectsLandingPageDetail"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SearchProspectsLandingPageDetail"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"SearchLandingPage"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"queries"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"query"}}]}}]}}]} as unknown as DocumentNode;
\ No newline at end of file
diff --git a/src/graphql/campaign.graphql b/src/graphql/campaign.graphql
index 12cb47fa5..f03a69512 100644
--- a/src/graphql/campaign.graphql
+++ b/src/graphql/campaign.graphql
@@ -59,6 +59,8 @@ fragment CampaignSummary on Campaign {
format
dayProportion
brandedKeywords
+ adsManagerCurrentBalance
+ hasInProcessOrCompleteTransfer
advertiser {
id
name
diff --git a/src/locales/en.po b/src/locales/en.po
index 0b9baade0..ea8b63a58 100644
--- a/src/locales/en.po
+++ b/src/locales/en.po
@@ -58,6 +58,12 @@ msgstr "About Brave Ads"
msgid "Account"
msgstr "Account"
+msgid "Account Balance"
+msgstr "Account Balance"
+
+msgid "Account Balance will be applied to this campaign"
+msgstr "Account Balance will be applied to this campaign"
+
msgid "Account Settings"
msgstr "Account Settings"
@@ -154,6 +160,12 @@ msgstr "An ad from my Brave browser"
msgid "An error has occurred while processing your request."
msgstr "An error has occurred while processing your request."
+msgid "and you will be charged {amountToCharge} USD."
+msgstr "and you will be charged {amountToCharge} USD."
+
+#~ msgid "and you will not be charged."
+#~ msgstr "and you will not be charged."
+
msgid "Android"
msgstr "Android"
@@ -382,6 +394,12 @@ msgstr "Cloning a campaign will take all properties including ad sets and ads, a
msgid "Close"
msgstr "Close"
+msgid "Close Campaign"
+msgstr "Close Campaign"
+
+msgid "Closing a campaign will immediately stop it from running. Once it has stopped running, any remaining funds will be transferred back to your account in 24-48 hours."
+msgstr "Closing a campaign will immediately stop it from running. Once it has stopped running, any remaining funds will be transferred back to your account in 24-48 hours."
+
msgid "Complete"
msgstr "Complete"
@@ -568,6 +586,9 @@ msgstr "Don’t see the email?"
#~ msgid "Don’t see the email? Check your spam folder or <0>try again.0>"
#~ msgstr "Don’t see the email? Check your spam folder or <0>try again.0>"
+#~ msgid "Don't show this message again"
+#~ msgstr "Don't show this message again"
+
msgid "Download Report"
msgstr "Download Report"
@@ -946,6 +967,9 @@ msgstr "No"
msgid "No {billingType} pricing available for {label}, contact selfserve@brave.com for help"
msgstr "No {billingType} pricing available for {label}, contact selfserve@brave.com for help"
+msgid "no additional charge will be applied."
+msgstr "no additional charge will be applied."
+
msgid "No conversion URL setup"
msgstr "No conversion URL setup"
@@ -1324,6 +1348,9 @@ msgstr "The <0>Basic Attention Token (BAT)0> is Brave’s native crypto token.
msgid "The campaign will likely stop running before the end date provided due to budget constraints."
msgstr "The campaign will likely stop running before the end date provided due to budget constraints."
+#~ msgid "The current balance for your account that you can attribute to a new Campaign."
+#~ msgstr "The current balance for your account that you can attribute to a new Campaign."
+
msgid "The current value for this metric may be an underestimate."
msgstr "The current value for this metric may be an underestimate."
@@ -1528,6 +1555,9 @@ msgstr "Work email"
msgid "Yes"
msgstr "Yes"
+msgid "You are about to close this campaign."
+msgstr "You are about to close this campaign."
+
msgid "You are attempting to create a new keypair, this will replace any of your account’s existing keypairs. Please note, previous keypairs cannot be retrieved or used once replaced."
msgstr "You are attempting to create a new keypair, this will replace any of your account’s existing keypairs. Please note, previous keypairs cannot be retrieved or used once replaced."
@@ -1546,6 +1576,9 @@ msgstr "You may have access to multiple accounts. Switch between them here."
msgid "You will soon receive an email with the next steps of registration. While you wait, we recommend you check out our help center to get helpful information for getting started with Brave Ads."
msgstr "You will soon receive an email with the next steps of registration. While you wait, we recommend you check out our help center to get helpful information for getting started with Brave Ads."
+msgid "Your account has a balance of ${0} USD. This will be applied to your campaign"
+msgstr "Your account has a balance of ${0} USD. This will be applied to your campaign"
+
msgid "Your account’s new private key will be:"
msgstr "Your account’s new private key will be:"
@@ -1561,6 +1594,9 @@ msgstr "Your campaign has been created and is now being reviewed by our ads team
msgid "Your campaign has been updated! <0/>If you added new ads, we’ll be in contact as soon as they are approved and activated. <1/>Thank you for using Brave Ads!"
msgstr "Your campaign has been updated! <0/>If you added new ads, we’ll be in contact as soon as they are approved and activated. <1/>Thank you for using Brave Ads!"
+msgid "Your current account balance"
+msgstr "Your current account balance"
+
msgid "Your trial campaign will be reviewed by an Account Manager. Add any notes or questions for them here."
msgstr "Your trial campaign will be reviewed by an Account Manager. Add any notes or questions for them here."
diff --git a/src/locales/es.po b/src/locales/es.po
index 6a6fe20b0..bd9f276a2 100644
--- a/src/locales/es.po
+++ b/src/locales/es.po
@@ -63,6 +63,12 @@ msgstr "Acerca de Brave Ads"
msgid "Account"
msgstr "Cuenta"
+msgid "Account Balance"
+msgstr ""
+
+msgid "Account Balance will be applied to this campaign"
+msgstr ""
+
msgid "Account Settings"
msgstr "Configuración de la cuenta"
@@ -159,6 +165,12 @@ msgstr "Un anuncio de mi navegador Brave"
msgid "An error has occurred while processing your request."
msgstr "Se ha producido un error al procesar su solicitud."
+msgid "and you will be charged {amountToCharge} USD."
+msgstr ""
+
+#~ msgid "and you will not be charged."
+#~ msgstr ""
+
msgid "Android"
msgstr "Android"
@@ -387,6 +399,12 @@ msgstr "Al clonar una campaña, se tomarán todas las propiedades, incluidos los
msgid "Close"
msgstr "Cerrar"
+msgid "Close Campaign"
+msgstr ""
+
+msgid "Closing a campaign will immediately stop it from running. Once it has stopped running, any remaining funds will be transferred back to your account in 24-48 hours."
+msgstr ""
+
msgid "Complete"
msgstr "Completar"
@@ -573,6 +591,9 @@ msgstr "¿No ve el correo electrónico?"
#~ msgid "Don’t see the email? Check your spam folder or <0>try again.0>"
#~ msgstr "Don’t see the email? Check your spam folder or <0>try again.0>"
+#~ msgid "Don't show this message again"
+#~ msgstr ""
+
msgid "Download Report"
msgstr "Descargar informe"
@@ -951,6 +972,9 @@ msgstr "No"
msgid "No {billingType} pricing available for {label}, contact selfserve@brave.com for help"
msgstr "No hay precios de {billingType} disponibles para {label}, contacte a selfserve@brave.com para obtener ayuda"
+msgid "no additional charge will be applied."
+msgstr ""
+
msgid "No conversion URL setup"
msgstr "No hay configuración de URL de conversión"
@@ -1329,6 +1353,9 @@ msgstr "El <0>Basic Attention Token (BAT)0> es el token criptográfico nativo
msgid "The campaign will likely stop running before the end date provided due to budget constraints."
msgstr "Es probable que la campaña deje de publicarse antes de la fecha de finalización proporcionada debido a restricciones presupuestarias."
+#~ msgid "The current balance for your account that you can attribute to a new Campaign."
+#~ msgstr ""
+
msgid "The current value for this metric may be an underestimate."
msgstr "El valor actual de esta métrica puede ser una subestimación."
@@ -1533,6 +1560,9 @@ msgstr "Correo electrónico de trabajo"
msgid "Yes"
msgstr "Sí"
+msgid "You are about to close this campaign."
+msgstr ""
+
msgid "You are attempting to create a new keypair, this will replace any of your account’s existing keypairs. Please note, previous keypairs cannot be retrieved or used once replaced."
msgstr "Está intentando crear un nuevo par de claves, que reemplazará cualquiera de los pares de claves existentes de su cuenta. Tenga en cuenta que los pares de claves anteriores no se pueden recuperar ni utilizar una vez reemplazados."
@@ -1551,6 +1581,9 @@ msgstr "Es posible que tenga acceso a varias cuentas. Cambie entre ellas aquí."
msgid "You will soon receive an email with the next steps of registration. While you wait, we recommend you check out our help center to get helpful information for getting started with Brave Ads."
msgstr "Pronto recibirá un correo electrónico con los próximos pasos del registro. Mientras espera, le recomendamos que consulte nuestro centro de ayuda para obtener información útil para comenzar con Brave Ads."
+msgid "Your account has a balance of ${0} USD. This will be applied to your campaign"
+msgstr ""
+
msgid "Your account’s new private key will be:"
msgstr "La nueva clave privada de su cuenta será:"
@@ -1566,6 +1599,9 @@ msgstr "Su campaña ha sido creada y ahora está siendo revisada por nuestro equ
msgid "Your campaign has been updated! <0/>If you added new ads, we’ll be in contact as soon as they are approved and activated. <1/>Thank you for using Brave Ads!"
msgstr "¡Su campaña ha sido actualizada! <0/>Si agregó nuevos anuncios, nos pondremos en contacto con usted tan pronto como se aprueben y activen. <1/>¡Gracias por usar Brave Ads!"
+msgid "Your current account balance"
+msgstr ""
+
msgid "Your trial campaign will be reviewed by an Account Manager. Add any notes or questions for them here."
msgstr "Su campaña de prueba será revisada por un Gerente de Cuenta. Agregue cualquier nota o pregunta para ellos aquí."
diff --git a/src/locales/pt.po b/src/locales/pt.po
index 4338a44b3..46981eeeb 100644
--- a/src/locales/pt.po
+++ b/src/locales/pt.po
@@ -63,6 +63,12 @@ msgstr "Sobre os Anúncios Brave"
msgid "Account"
msgstr "Conta"
+msgid "Account Balance"
+msgstr ""
+
+msgid "Account Balance will be applied to this campaign"
+msgstr ""
+
msgid "Account Settings"
msgstr "Configurações da Conta"
@@ -159,6 +165,12 @@ msgstr "Um anúncio do meu navegador Brave"
msgid "An error has occurred while processing your request."
msgstr "Ocorreu um erro ao processar sua solicitação."
+msgid "and you will be charged {amountToCharge} USD."
+msgstr ""
+
+#~ msgid "and you will not be charged."
+#~ msgstr ""
+
msgid "Android"
msgstr "Android"
@@ -387,6 +399,12 @@ msgstr "Clonar uma campanha vai copiar todas as configurações, incluindo conju
msgid "Close"
msgstr "Fechar"
+msgid "Close Campaign"
+msgstr ""
+
+msgid "Closing a campaign will immediately stop it from running. Once it has stopped running, any remaining funds will be transferred back to your account in 24-48 hours."
+msgstr ""
+
msgid "Complete"
msgstr "Concluir"
@@ -573,6 +591,9 @@ msgstr ""
#~ msgid "Don’t see the email? Check your spam folder or <0>try again.0>"
#~ msgstr "Não recebeu o e-mail? Verifique sua pasta de spam ou <0>tente novamente.0>"
+#~ msgid "Don't show this message again"
+#~ msgstr ""
+
msgid "Download Report"
msgstr "Baixar Relatório"
@@ -951,6 +972,9 @@ msgstr "Não"
msgid "No {billingType} pricing available for {label}, contact selfserve@brave.com for help"
msgstr "Não há preços de {billingType} disponíveis para {label}, entre em contato com selfserve@brave.com para obter ajuda"
+msgid "no additional charge will be applied."
+msgstr ""
+
msgid "No conversion URL setup"
msgstr "Nenhuma configuração de URL de conversão"
@@ -1329,6 +1353,9 @@ msgstr "O <0>Basic Attention Token (BAT)0> é a criptomoeda nativa do Brave. U
msgid "The campaign will likely stop running before the end date provided due to budget constraints."
msgstr ""
+#~ msgid "The current balance for your account that you can attribute to a new Campaign."
+#~ msgstr ""
+
msgid "The current value for this metric may be an underestimate."
msgstr "O valor atual para esta métrica pode ser uma subestimativa."
@@ -1533,6 +1560,9 @@ msgstr "E-mail corporativo"
msgid "Yes"
msgstr "Sim"
+msgid "You are about to close this campaign."
+msgstr ""
+
msgid "You are attempting to create a new keypair, this will replace any of your account’s existing keypairs. Please note, previous keypairs cannot be retrieved or used once replaced."
msgstr "Você está tentando criar um novo par de chaves, isso substituirá qualquer um dos pares de chaves existentes na sua conta. Observe que os pares de chaves anteriores não podem ser recuperados ou usados uma vez que forem substituídos."
@@ -1551,6 +1581,9 @@ msgstr "Você pode ter acesso a várias contas. Alterne entre elas aqui."
msgid "You will soon receive an email with the next steps of registration. While you wait, we recommend you check out our help center to get helpful information for getting started with Brave Ads."
msgstr "Em breve, você receberá um e-mail com os próximos passos do cadastro. Enquanto isso, sugerimos que você dê uma olhada em nossa Central de Ajuda para obter informações úteis sobre como começar a usar os Anúncios Brave."
+msgid "Your account has a balance of ${0} USD. This will be applied to your campaign"
+msgstr ""
+
msgid "Your account’s new private key will be:"
msgstr "A nova chave privada da sua conta será:"
@@ -1563,6 +1596,9 @@ msgstr "Sua campanha foi criada e está sendo revisada por nossa equipe de anún
msgid "Your campaign has been updated! <0/>If you added new ads, we’ll be in contact as soon as they are approved and activated. <1/>Thank you for using Brave Ads!"
msgstr "Sua campanha foi atualizada! <0/>Se você adicionou novos anúncios, entraremos em contato assim que eles forem aprovados e ativados. <1/>Obrigado por usar os Anúncios Brave!"
+msgid "Your current account balance"
+msgstr ""
+
msgid "Your trial campaign will be reviewed by an Account Manager. Add any notes or questions for them here."
msgstr "Sua campanha de teste será revisada por um Gerente de Conta. Adicione aqui quaisquer observações ou perguntas para eles."
diff --git a/src/locales/test.po b/src/locales/test.po
index 31df4db3d..a31daaec2 100644
--- a/src/locales/test.po
+++ b/src/locales/test.po
@@ -58,6 +58,12 @@ msgstr ""
msgid "Account"
msgstr ""
+msgid "Account Balance"
+msgstr ""
+
+msgid "Account Balance will be applied to this campaign"
+msgstr ""
+
msgid "Account Settings"
msgstr ""
@@ -154,6 +160,12 @@ msgstr ""
msgid "An error has occurred while processing your request."
msgstr ""
+msgid "and you will be charged {amountToCharge} USD."
+msgstr ""
+
+#~ msgid "and you will not be charged."
+#~ msgstr ""
+
msgid "Android"
msgstr ""
@@ -382,6 +394,12 @@ msgstr ""
msgid "Close"
msgstr ""
+msgid "Close Campaign"
+msgstr ""
+
+msgid "Closing a campaign will immediately stop it from running. Once it has stopped running, any remaining funds will be transferred back to your account in 24-48 hours."
+msgstr ""
+
msgid "Complete"
msgstr ""
@@ -568,6 +586,9 @@ msgstr ""
#~ msgid "Don’t see the email? Check your spam folder or <0>try again.0>"
#~ msgstr ""
+#~ msgid "Don't show this message again"
+#~ msgstr ""
+
msgid "Download Report"
msgstr ""
@@ -946,6 +967,9 @@ msgstr ""
msgid "No {billingType} pricing available for {label}, contact selfserve@brave.com for help"
msgstr ""
+msgid "no additional charge will be applied."
+msgstr ""
+
msgid "No conversion URL setup"
msgstr ""
@@ -1324,6 +1348,9 @@ msgstr ""
msgid "The campaign will likely stop running before the end date provided due to budget constraints."
msgstr ""
+#~ msgid "The current balance for your account that you can attribute to a new Campaign."
+#~ msgstr ""
+
msgid "The current value for this metric may be an underestimate."
msgstr ""
@@ -1528,6 +1555,9 @@ msgstr ""
msgid "Yes"
msgstr ""
+msgid "You are about to close this campaign."
+msgstr ""
+
msgid "You are attempting to create a new keypair, this will replace any of your account’s existing keypairs. Please note, previous keypairs cannot be retrieved or used once replaced."
msgstr ""
@@ -1546,6 +1576,9 @@ msgstr ""
msgid "You will soon receive an email with the next steps of registration. While you wait, we recommend you check out our help center to get helpful information for getting started with Brave Ads."
msgstr ""
+msgid "Your account has a balance of ${0} USD. This will be applied to your campaign"
+msgstr ""
+
msgid "Your account’s new private key will be:"
msgstr ""
@@ -1561,6 +1594,9 @@ msgstr ""
msgid "Your campaign has been updated! <0/>If you added new ads, we’ll be in contact as soon as they are approved and activated. <1/>Thank you for using Brave Ads!"
msgstr ""
+msgid "Your current account balance"
+msgstr ""
+
msgid "Your trial campaign will be reviewed by an Account Manager. Add any notes or questions for them here."
msgstr ""
diff --git a/src/user/campaignList/CampaignList.tsx b/src/user/campaignList/CampaignList.tsx
index a9b4f96e1..becd426b9 100644
--- a/src/user/campaignList/CampaignList.tsx
+++ b/src/user/campaignList/CampaignList.tsx
@@ -25,6 +25,7 @@ import {
CampaignSummaryFragment,
} from "@/graphql-client/graphql";
import { useQuery } from "@apollo/client";
+import { CloseCampaignModal } from "@/components/Campaigns/CloseCampaignModal";
interface Props {
advertiser?: AdvertiserCampaignsFragment | null;
@@ -220,6 +221,14 @@ export function CampaignList({ advertiser }: Props) {
{advertiser?.selfServiceManageCampaign && (
)}
+ {advertiser?.selfServiceManageCampaign &&
+ !advertiser?.selfServiceSetPrice && (
+
+ )}
);
};
diff --git a/src/user/hooks/useGetAdvertiserAccountBalance.tsx b/src/user/hooks/useGetAdvertiserAccountBalance.tsx
new file mode 100644
index 000000000..34dfd46a9
--- /dev/null
+++ b/src/user/hooks/useGetAdvertiserAccountBalance.tsx
@@ -0,0 +1,25 @@
+import { graphql } from "@/graphql-client/index";
+import { useQuery } from "@apollo/client";
+import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser";
+
+const CurrentAdvertiserBalance = graphql(`
+ query CurrentAdvertiserBalance($id: String!) {
+ advertiser(id: $id) {
+ id
+ accountBalance
+ }
+ }
+`);
+
+export function useGetAdvertiserAccountBalance() {
+ const { advertiser } = useAdvertiser();
+
+ const { loading, data } = useQuery(CurrentAdvertiserBalance, {
+ variables: { id: advertiser.id },
+ skip:
+ advertiser.selfServiceSetPrice || !advertiser.selfServiceManageCampaign,
+ fetchPolicy: "cache-and-network",
+ });
+
+ return { loading, data };
+}
diff --git a/src/user/settings/AccountBalance.tsx b/src/user/settings/AccountBalance.tsx
new file mode 100644
index 000000000..fcce84f6b
--- /dev/null
+++ b/src/user/settings/AccountBalance.tsx
@@ -0,0 +1,29 @@
+import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser";
+import { Trans } from "@lingui/macro";
+import { Skeleton, Typography } from "@mui/material";
+import { CardContainer } from "@/components/Card/CardContainer";
+import { useGetAdvertiserAccountBalance } from "@/user/hooks/useGetAdvertiserAccountBalance";
+import { renderMonetaryAmount } from "@/components/Datagrid/renderers";
+
+export function AccountBalance() {
+ const { advertiser } = useAdvertiser();
+ const { loading, data } = useGetAdvertiserAccountBalance();
+
+ if (!advertiser.selfServiceManageCampaign || advertiser.selfServiceSetPrice) {
+ return null;
+ }
+
+ return (
+ Account Balance}>
+
+ Your current account balance
+
+ {loading && }
+ {!loading && data && data.advertiser && (
+
+ {renderMonetaryAmount(data.advertiser.accountBalance, "USD")}
+
+ )}
+
+ );
+}
diff --git a/src/user/settings/Settings.tsx b/src/user/settings/Settings.tsx
index 121b4cfcb..d646dd758 100644
--- a/src/user/settings/Settings.tsx
+++ b/src/user/settings/Settings.tsx
@@ -19,6 +19,7 @@ import { NewKeyPairModal } from "@/user/settings/NewKeyPairModal";
import MiniSideBar from "@/components/Drawer/MiniSideBar";
import { useTrackWithMatomo } from "@/hooks/useTrackWithMatomo";
import { Trans } from "@lingui/macro";
+import { AccountBalance } from "@/user/settings/AccountBalance";
const Settings = () => {
const { trackMatomoEvent } = useTrackWithMatomo({
@@ -73,6 +74,8 @@ const Settings = () => {
+
+
diff --git a/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx b/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx
index 47bcba01f..9826c0657 100644
--- a/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx
+++ b/src/user/views/adsManager/views/advanced/components/campaign/fields/PaymentMethodField.tsx
@@ -1,19 +1,42 @@
-import { Stack, Typography } from "@mui/material";
+import { Alert, AlertTitle, Stack, Typography } from "@mui/material";
import { FormikRadioControl, useIsEdit } from "@/form/FormikHelpers";
import { PaymentType } from "@/graphql-client/graphql";
import { useAdvertiser } from "@/auth/hooks/queries/useAdvertiser";
import { CardContainer } from "@/components/Card/CardContainer";
import { LearnMoreButton } from "@/components/Button/LearnMoreButton";
-import { Trans } from "@lingui/macro";
+import { t, Trans } from "@lingui/macro";
+import BigNumber from "bignumber.js";
+import { useField } from "formik";
+import { useCallback } from "react";
+import { useGetAdvertiserAccountBalance } from "@/user/hooks/useGetAdvertiserAccountBalance";
+import { formatUsd } from "@/user/library/format";
export function PaymentMethodField() {
const { isDraft } = useIsEdit();
const { advertiser } = useAdvertiser();
+ const [, meta] = useField("budget");
+ const { loading, data } = useGetAdvertiserAccountBalance();
if (advertiser.selfServiceSetPrice) {
return null;
}
+ const balance = BigNumber(data?.advertiser?.accountBalance ?? "0");
+ const amountOwed = useCallback(
+ (balance: BigNumber) => {
+ const budget = BigNumber(meta.value).minus(balance);
+ if (budget.lte(0)) return BigNumber(0);
+ return budget;
+ },
+ [meta.value],
+ );
+
+ const chargeMessage = (b: BigNumber) => {
+ if (b.lte(0)) return t`no additional charge will be applied.`;
+ const amountToCharge = formatUsd(b);
+ return t`and you will be charged ${amountToCharge} USD.`;
+ };
+
return (
Payment}>
@@ -22,7 +45,7 @@ export function PaymentMethodField() {
+ {balance.gt(0) && isDraft && (
+
+
+ Account Balance will be applied to this campaign
+
+
+ Your account has a balance of ${formatUsd(balance)} USD. This will
+ be applied to your campaign
+
+ {", "}
+ {chargeMessage(amountOwed(balance))}
+
+ )}
);
}