/**
 * Cloudflare URL-SCANNER API
 *
 * Generated from Cloudflare TypeScript SDK.
 * DO NOT EDIT - regenerate with: bun scripts/generate.ts --service url-scanner
 */
import * as Schema from "effect/Schema";
import type * as HttpClient from "effect/unstable/http/HttpClient";
import * as API from "../client/api.ts";
import type { Credentials } from "../credentials.ts";
import { type DefaultErrors } from "../errors.ts";
export interface GetResponsRequest {
    responseId: string;
    /** Account ID. */
    accountId: string;
}
export declare const GetResponsRequest: Schema.Schema<GetResponsRequest>;
export type GetResponsResponse = string;
export declare const GetResponsResponse: Schema.Schema<GetResponsResponse>;
export type GetResponsError = DefaultErrors;
export declare const getRespons: API.OperationMethod<GetResponsRequest, GetResponsResponse, GetResponsError, Credentials | HttpClient.HttpClient>;
export interface GetScanRequest {
    scanId: string;
    /** Account ID. */
    accountId: string;
}
export declare const GetScanRequest: Schema.Schema<GetScanRequest>;
export interface GetScanResponse {
    data: {
        console: {
            message: {
                level: string;
                source: string;
                text: string;
                url: string;
            };
        }[];
        cookies: {
            domain: string;
            expires: number;
            httpOnly: boolean;
            name: string;
            path: string;
            priority: string;
            sameParty: boolean;
            secure: boolean;
            session: boolean;
            size: number;
            sourcePort: number;
            sourceScheme: string;
            value: string;
        }[];
        globals: {
            prop: string;
            type: string;
        }[];
        links: {
            href: string;
            text: string;
        }[];
        performance: {
            duration: number;
            entryType: string;
            name: string;
            startTime: number;
        }[];
        requests: {
            request: {
                documentURL: string;
                hasUserGesture: boolean;
                initiator: {
                    host: string;
                    type: string;
                    url: string;
                };
                redirectHasExtraInfo: boolean;
                request: {
                    initialPriority: string;
                    isSameSite: boolean;
                    method: string;
                    mixedContentType: string;
                    referrerPolicy: string;
                    url: string;
                    headers?: unknown | null;
                };
                requestId: string;
                type: string;
                wallTime: number;
                frameId?: string | null;
                loaderId?: string | null;
                primaryRequest?: boolean | null;
                redirectResponse?: {
                    charset: string;
                    mimeType: string;
                    protocol: string;
                    remoteIPAddress: string;
                    remotePort: number;
                    securityHeaders: {
                        name: string;
                        value: string;
                    }[];
                    securityState: string;
                    status: number;
                    statusText: string;
                    url: string;
                    headers?: unknown | null;
                } | null;
            };
            response: {
                asn: {
                    asn: string;
                    country: string;
                    description: string;
                    ip: string;
                    name: string;
                    org: string;
                };
                dataLength: number;
                encodedDataLength: number;
                geoip: {
                    city: string;
                    country: string;
                    countryName: string;
                    geonameId: string;
                    ll: number[];
                    region: string;
                };
                hasExtraInfo: boolean;
                requestId: string;
                response: {
                    charset: string;
                    mimeType: string;
                    protocol: string;
                    remoteIPAddress: string;
                    remotePort: number;
                    securityDetails: {
                        certificateId: number;
                        certificateTransparencyCompliance: string;
                        cipher: string;
                        encryptedClientHello: boolean;
                        issuer: string;
                        keyExchange: string;
                        keyExchangeGroup: string;
                        protocol: string;
                        sanList: string[];
                        serverSignatureAlgorithm: number;
                        subjectName: string;
                        validFrom: number;
                        validTo: number;
                    };
                    securityHeaders: {
                        name: string;
                        value: string;
                    }[];
                    securityState: string;
                    status: number;
                    statusText: string;
                    url: string;
                    headers?: unknown | null;
                };
                size: number;
                type: string;
                contentAvailable?: boolean | null;
                hash?: string | null;
            };
            requests?: {
                documentURL: string;
                frameId: string;
                hasUserGesture: boolean;
                initiator: {
                    type: string;
                };
                loaderId: string;
                redirectHasExtraInfo: boolean;
                request: {
                    headers: {
                        name: string;
                    };
                    initialPriority: string;
                    isSameSite: boolean;
                    method: string;
                    mixedContentType: string;
                    referrerPolicy: string;
                    url: string;
                };
                requestId: string;
                type: string;
                wallTime: number;
            }[] | null;
        }[];
    };
    lists: {
        asns: string[];
        certificates: {
            issuer: string;
            subjectName: string;
            validFrom: number;
            validTo: number;
        }[];
        continents: string[];
        countries: string[];
        domains: string[];
        hashes: string[];
        ips: string[];
        linkDomains: string[];
        servers: string[];
        urls: string[];
    };
    meta: {
        processors: {
            asn: {
                data: {
                    asn: string;
                    country: string;
                    description: string;
                    ip: string;
                    name: string;
                }[];
            };
            dns: {
                data: {
                    address: string;
                    dnssecValid: boolean;
                    name: string;
                    type: string;
                }[];
            };
            domainCategories: {
                data: {
                    inherited: unknown;
                    isPrimary: boolean;
                    name: string;
                }[];
            };
            geoip: {
                data: {
                    geoip: {
                        city: string;
                        country: string;
                        countryName: string;
                        ll: number[];
                        region: string;
                    };
                    ip: string;
                }[];
            };
            phishing: {
                data: string[];
            };
            radarRank: {
                data: {
                    bucket: string;
                    hostname: string;
                    rank?: number | null;
                }[];
            };
            wappa: {
                data: {
                    app: string;
                    categories: {
                        name: string;
                        priority: number;
                    }[];
                    confidence: {
                        confidence: number;
                        name: string;
                        pattern: string;
                        patternType: string;
                    }[];
                    confidenceTotal: number;
                    icon: string;
                    website: string;
                }[];
            };
            urlCategories?: {
                data: {
                    content: {
                        id: number;
                        name: string;
                        superCategoryId: number;
                    }[];
                    inherited: {
                        content: {
                            id: number;
                            name: string;
                            superCategoryId: number;
                        }[];
                        from: string;
                        risks: {
                            id: number;
                            name: string;
                            superCategoryId: number;
                        }[];
                    };
                    name: string;
                    risks: {
                        id: number;
                        name: string;
                        superCategoryId: number;
                    }[];
                }[];
            } | null;
        };
    };
    page: {
        apexDomain: string;
        asn: string;
        asnname: string;
        city: string;
        country: string;
        domain: string;
        ip: string;
        mimeType: string;
        server: string;
        status: string;
        title: string;
        tlsAgeDays: number;
        tlsIssuer: string;
        tlsValidDays: number;
        tlsValidFrom: string;
        url: string;
        screenshot?: {
            dhash: string;
            mm3Hash: number;
            name: string;
            phash: string;
        } | null;
    };
    scanner: {
        colo: string;
        country: string;
    };
    stats: {
        domainStats: {
            count: number;
            countries: string[];
            domain: string;
            encodedSize: number;
            index: number;
            initiators: string[];
            ips: string[];
            redirects: number;
            size: number;
        }[];
        ipStats: {
            asn: {
                asn: string;
                country: string;
                description: string;
                ip: string;
                name: string;
                org: string;
            };
            countries: string[];
            domains: string[];
            encodedSize: number;
            geoip: {
                city: string;
                country: string;
                countryName: string;
                ll: number[];
                region: string;
            };
            index: number;
            ip: string;
            ipv6: boolean;
            redirects: number;
            requests: number;
            size: number;
            count?: number | null;
        }[];
        ipv6Percentage: number;
        malicious: number;
        protocolStats: {
            count: number;
            countries: string[];
            encodedSize: number;
            ips: string[];
            protocol: string;
            size: number;
        }[];
        resourceStats: {
            compression: number;
            count: number;
            countries: string[];
            encodedSize: number;
            ips: string[];
            percentage: number;
            size: number;
            type: string;
        }[];
        securePercentage: number;
        secureRequests: number;
        serverStats: {
            count: number;
            countries: string[];
            encodedSize: number;
            ips: string[];
            server: string;
            size: number;
        }[];
        tlsStats: {
            count: number;
            countries: string[];
            encodedSize: number;
            ips: string[];
            protocols: {
                "tls 1.3 / AES_128GCM": number;
            };
            securityState: string;
            size: number;
        }[];
        totalLinks: number;
        uniqASNs: number;
        uniqCountries: number;
    };
    task: {
        apexDomain: string;
        domain: string;
        domURL: string;
        method: string;
        options: {
            customHeaders?: unknown | null;
            screenshotsResolutions?: string[] | null;
        };
        reportURL: string;
        screenshotURL: string;
        source: string;
        success: boolean;
        time: string;
        url: string;
        uuid: string;
        visibility: string;
    };
    verdicts: {
        overall: {
            categories: string[];
            hasVerdicts: boolean;
            malicious: boolean;
            tags: string[];
        };
    };
}
export declare const GetScanResponse: Schema.Schema<GetScanResponse>;
export type GetScanError = DefaultErrors;
export declare const getScan: API.OperationMethod<GetScanRequest, GetScanResponse, GetScanError, Credentials | HttpClient.HttpClient>;
export interface ListScansRequest {
    /** Path param: Account ID. */
    accountId: string;
    /** Query param: Filter scans */
    q?: string;
    /** Query param: Limit the number of objects in the response. */
    size?: number;
}
export declare const ListScansRequest: Schema.Schema<ListScansRequest>;
export interface ListScansResponse {
    results: {
        id: string;
        page: {
            asn: string;
            country: string;
            ip: string;
            url: string;
        };
        result: string;
        stats: {
            dataLength: number;
            requests: number;
            uniqCountries: number;
            uniqIPs: number;
        };
        task: {
            time: string;
            url: string;
            uuid: string;
            visibility: string;
        };
        verdicts: {
            malicious: boolean;
        };
    }[];
}
export declare const ListScansResponse: Schema.Schema<ListScansResponse>;
export type ListScansError = DefaultErrors;
export declare const listScans: API.OperationMethod<ListScansRequest, ListScansResponse, ListScansError, Credentials | HttpClient.HttpClient>;
export interface CreateScanRequest {
    /** Path param: Account ID. */
    accountId: string;
    /** Body param: */
    url: string;
    /** Body param: Country to geo egress from */
    country?: "AF" | "AL" | "DZ" | "AD" | "AO" | "AG" | "AR" | "AM" | "AU" | "AT" | "AZ" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BM" | "BT" | "BO" | "BA" | "BW" | "BR" | "BN" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "KY" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CG" | "CR" | "CI" | "HR" | "CU" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "SZ" | "ET" | "FJ" | "FI" | "FR" | "GA" | "GE" | "DE" | "GH" | "GR" | "GL" | "GD" | "GT" | "GN" | "GW" | "GY" | "HT" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "JM" | "JP" | "JO" | "KZ" | "KE" | "KI" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LY" | "LI" | "LT" | "LU" | "MO" | "MG" | "MW" | "MY" | "MV" | "ML" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "MS" | "MA" | "MZ" | "MM" | "NA" | "NR" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "KP" | "MK" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "QA" | "RO" | "RU" | "RW" | "SH" | "KN" | "LC" | "VC" | "WS" | "SM" | "ST" | "SA" | "SN" | "RS" | "SC" | "SL" | "SK" | "SI" | "SB" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SE" | "CH" | "SY" | "TW" | "TJ" | "TZ" | "TH" | "BS" | "GM" | "TL" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UG" | "UA" | "AE" | "GB" | "US" | "UY" | "UZ" | "VU" | "VE" | "VN" | "YE" | "ZM" | "ZW";
    /** Body param: */
    customagent?: string;
    /** Body param: Set custom headers. */
    customHeaders?: Record<string, unknown>;
    /** Body param: */
    referer?: string;
    /** Body param: Take multiple screenshots targeting different device types. */
    screenshotsResolutions?: ("desktop" | "mobile" | "tablet")[];
    /** Body param: The option `Public` means it will be included in listings like recent scans and search results. `Unlisted` means it will not be included in the aforementioned listings, users will need to  */
    visibility?: "Public" | "Unlisted";
}
export declare const CreateScanRequest: Schema.Schema<CreateScanRequest>;
export interface CreateScanResponse {
    /** URL to api report. */
    api: string;
    message: string;
    /** Public URL to report. */
    result: string;
    /** Canonical form of submitted URL. Use this if you want to later search by URL. */
    url: string;
    /** Scan ID. */
    uuid: string;
    /** Submitted visibility status. */
    visibility: "public" | "unlisted";
    options?: {
        useragent?: string | null;
    } | null;
}
export declare const CreateScanResponse: Schema.Schema<CreateScanResponse>;
export type CreateScanError = DefaultErrors;
export declare const createScan: API.OperationMethod<CreateScanRequest, CreateScanResponse, CreateScanError, Credentials | HttpClient.HttpClient>;
export interface BulkCreateScansRequest {
    /** Path param: Account ID. */
    accountId: string;
    /** Body param: List of urls to scan (up to a 100). */
    body?: {
        url: string;
        customagent?: string;
        customHeaders?: Record<string, unknown>;
        referer?: string;
        screenshotsResolutions?: ("desktop" | "mobile" | "tablet")[];
        visibility?: "Public" | "Unlisted";
    }[];
}
export declare const BulkCreateScansRequest: Schema.Schema<BulkCreateScansRequest>;
export type BulkCreateScansResponse = {
    api: string;
    result: string;
    url: string;
    uuid: string;
    visibility: "public" | "unlisted";
    options?: {
        useragent?: string | null;
    } | null;
}[];
export declare const BulkCreateScansResponse: Schema.Schema<BulkCreateScansResponse>;
export type BulkCreateScansError = DefaultErrors;
export declare const bulkCreateScans: API.OperationMethod<BulkCreateScansRequest, BulkCreateScansResponse, BulkCreateScansError, Credentials | HttpClient.HttpClient>;
export interface DomScanRequest {
    scanId: string;
    /** Account ID. */
    accountId: string;
}
export declare const DomScanRequest: Schema.Schema<DomScanRequest>;
export type DomScanResponse = string;
export declare const DomScanResponse: Schema.Schema<DomScanResponse>;
export type DomScanError = DefaultErrors;
export declare const domScan: API.OperationMethod<DomScanRequest, DomScanResponse, DomScanError, Credentials | HttpClient.HttpClient>;
export interface HarScanRequest {
    scanId: string;
    /** Account ID. */
    accountId: string;
}
export declare const HarScanRequest: Schema.Schema<HarScanRequest>;
export interface HarScanResponse {
    log: {
        creator: {
            comment: string;
            name: string;
            version: string;
        };
        entries: {
            initialPriority: string;
            initiatorType: string;
            priority: string;
            requestId: string;
            requestTime: number;
            resourceType: string;
            cache: unknown;
            connection: string;
            pageref: string;
            request: {
                bodySize: number;
                headers: {
                    name: string;
                    value: string;
                }[];
                headersSize: number;
                httpVersion: string;
                method: string;
                url: string;
            };
            response: {
                transferSize: number;
                bodySize: number;
                content: {
                    mimeType: string;
                    size: number;
                    compression?: number | null;
                };
                headers: {
                    name: string;
                    value: string;
                }[];
                headersSize: number;
                httpVersion: string;
                redirectURL: string;
                status: number;
                statusText: string;
            };
            serverIPAddress: string;
            startedDateTime: string;
            time: number;
        }[];
        pages: {
            id: string;
            pageTimings: {
                onContentLoad: number;
                onLoad: number;
            };
            startedDateTime: string;
            title: string;
        }[];
        version: string;
    };
}
export declare const HarScanResponse: Schema.Schema<HarScanResponse>;
export type HarScanError = DefaultErrors;
export declare const harScan: API.OperationMethod<HarScanRequest, HarScanResponse, HarScanError, Credentials | HttpClient.HttpClient>;
export interface ScreenshotScanRequest {
    scanId: string;
    /** Path param: Account ID. */
    accountId: string;
    /** Query param: Target device type. */
    resolution?: "desktop" | "mobile" | "tablet";
}
export declare const ScreenshotScanRequest: Schema.Schema<ScreenshotScanRequest>;
export type ScreenshotScanResponse = unknown;
export declare const ScreenshotScanResponse: Schema.Schema<ScreenshotScanResponse>;
export type ScreenshotScanError = DefaultErrors;
export declare const screenshotScan: API.OperationMethod<ScreenshotScanRequest, ScreenshotScanResponse, ScreenshotScanError, Credentials | HttpClient.HttpClient>;
//# sourceMappingURL=url-scanner.d.ts.map