/*!
Copyright 2022 SecuX Technology Inc
Copyright Chen Wei-En
Copyright Wu Tsung-Yu

Licensed under the Apache License, Version 2.0 (the License);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an AS IS BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/// <reference types="node" />
/// <reference types="node" />
import { TransactionType } from "@secux/protocol-transaction/lib/interface";
import { communicationData } from "@secux/utility/lib/communication";
export declare const ow_address: import("ow").StringPredicate;
export declare const ow_programid: import("ow").AnyPredicate<string>;
export declare const ow_publickey: import("ow").AnyPredicate<string | Buffer>;
export declare const ow_path: import("ow").StringPredicate;
export type Base58String = string;
export type HexString = string;
export type ATAOption = {
    mintAccount: Base58String;
    program?: HexString;
};
export declare const ow_ATAOption: import("ow").ObjectPredicate<{
    mintAccount: string;
    program: string | undefined;
}>;
export type SeedOption = {
    seed: string;
    programId: Base58String;
};
export declare const ow_SeedOption: import("ow").ObjectPredicate<{
    seed: string;
    programId: string;
}>;
export type Instruction = {
    programId: Base58String;
    keys: Array<{
        pubkey: Base58String;
        isSigner: boolean;
        isWritable: boolean;
    }>;
    data: communicationData;
};
export declare const ow_instruction: import("ow").ObjectPredicate<{
    programId: string;
    keys: {
        pubkey: string;
        isSigner: boolean;
        isWritable: boolean;
    }[];
    data: string | Buffer;
}>;
export type HexInstruction = {
    programId: HexString;
    accounts: Array<{
        publickey: HexString;
        isSigner: boolean;
        isWritable: boolean;
    }>;
    data: communicationData;
};
export declare const ow_hexInstruction: import("ow").ObjectPredicate<{
    programId: string | Buffer;
    accounts: {
        publickey: string | Buffer;
        isSigner: boolean;
        isWritable: boolean;
    }[];
    data: string | Buffer;
}>;
export declare enum InstructionType {
    SetUnitLimit = "setComputeUnitLimit",
    SetUnitPrice = "setComputeUnitPrice",
    CreateAccount = "createAccount",
    Transfer = "transfer",
    CreateAccountWithSeed = "createAccountWithSeed",
    CreateAssociatedAccount = "createAssociatedTokenAccount",
    TransferToken = "tokenTransfer",
    TransferTokenChecked = "tokenTransferChecked",
    CloseAccount = "closeAccount",
    InitializeStake = "initializeStake",
    Delegate = "delegate",
    Withdraw = "withdraw",
    Deactivate = "deactivate"
}
export type BuiltinInstruction = {
    type: InstructionType;
    params: any;
};
export declare const ow_builtinInstruction: import("ow").ObjectPredicate<{
    type: string;
}>;
export type Ownership = {
    path: string;
    account: Base58String;
};
export type txDetail = {
    recentBlockhash: Base58String;
    instructions: Array<Instruction | BuiltinInstruction>;
    ownerships: Array<Ownership>;
    txType?: TransactionType;
};
export type txOption = {
    feePayer?: Base58String;
    txType?: TransactionType;
};
export declare const ow_ownership: import("ow").ObjectPredicate<{
    path: string;
    account: string;
}>;
export declare const ow_txDetail: import("ow").ObjectPredicate<{
    recentBlockhash: string;
    instructions: ({
        programId: string;
        keys: {
            pubkey: string;
            isSigner: boolean;
            isWritable: boolean;
        }[];
        data: string | Buffer;
    } | {
        programId: string | Buffer;
        accounts: {
            publickey: string | Buffer;
            isSigner: boolean;
            isWritable: boolean;
        }[];
        data: string | Buffer;
    } | {
        type: string;
    })[];
    ownerships: {
        path: string;
        account: string;
    }[];
    txType: number | undefined;
}>;
export declare const ow_txOption: import("ow").ObjectPredicate<{
    feePayer: string | undefined;
    txType: number | undefined;
}>;
export declare const InstructionMap: {
    [type: string]: Function;
};
